當前位置:
首頁 > 最新 > 解決跨域的幾種方法

解決跨域的幾種方法

瀏覽器從一個域名的網頁去請求另一個域名的資源時,域名、埠、協議任一不同,都是跨域

兩個誤區


對於跨域,前端開發人員應該都遇到過,不過很多人對於跨域都有一定的誤解

跨域是後台限定的?

前台發的請求都是跨域?

這兩點其實都是錯誤的觀點,正確的觀點應該是這樣的:

跨域是瀏覽器的行為,但是後台可以輔助解決跨域。

跨域其實是針對ajax請求的,對於標籤、form表單等並沒有這樣的限制(所以會有以及)。

解決方案

src="/your/url?name=func"

>

functionfunc(data) {

// 你的邏輯

}

這裡可以看到,載入標籤的時候還會帶一個參數,這個參數其實就是要運行的函數(全局函數)的名稱。


這個就是只有開發人員會用到的了,因為跨域是瀏覽器的行為,所以,我們可以把這個行為給關了mac環境

//chrome 瀏覽器

open-a"Google Chrome"--args--disable-web-security--user-data-dir

//safari 瀏覽器

open-a"/Applications/Safari.app"--args--disable-web-security--user-data-dirwindows這裡的chrome.exe 地址根據自己安裝路徑來, 測試過 chrome45,48,53版本。 45版本 只需要 --disable-web-security 48,53版本需要 額外添加 --user-data-dir

"C:UsersUserNameAppDataLocalGoogleChromeApplicationchrome.exe" --disable-web-security --user-data-dir


前面提到,後台可以輔助解決跨域的行為,解決方法一是前面提到的(JSONP是需要後台輔助的),另外一個就是後台添加一些配置,這種方式又被稱作CORS()。就拿Nodejs來說,後台可以這樣配置:

var express=require("express");

var app=express();

//設置跨域訪問

app.all("*",function(req, res, next) {

res.header("Access-Control-Allow-Origin","*");

res.header("Access-Control-Allow-Headers","X-Requested-With");

res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");

res.header("X-Powered-By"," 3.2.1")

res.header("Content-Type","application/json;charset=utf-8");

next();

});


我們還可以使用代理,將需要跨域的URL在伺服器後台進行代理,這其實就是繞過了瀏覽器的跨域行為。常用的代理軟體有charles/cow等。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 生活小幫手Pro 的精彩文章:

TAG:生活小幫手Pro |