天天看點

Javascript跨域和Ajax跨域解決方案總結

1.什麼引起了ajax跨域不能的問題

ajax本身實際上是通過XMLHttpRequest對象來進行資料的互動,而浏覽器出于安全考慮,不允許js代碼進行跨域操作,是以會警告或者直接不執行。

例如A網址通過js請求B網址内容,通過浏覽器檢測,出現下面錯誤,就表示浏覽器禁止跨域請求

Javascript跨域和Ajax跨域解決方案總結

2.有什麼完美的解決方案麼?

暫時沒有。解決方案有不少,但是隻能是根據自己的實際情況來選擇。

網上的方法很多,可以百度下,下面是我的方法

①、A網址将ajax請求到本域名下的控制器,然後在本域名下的控制器,例如php的file_get_contents或者curl請求外部B網站url資料,然後傳回給自己域名下的JS

②、使用jquery ajax資料類型改為 dataType : 'jsonp';具體用法自行百度JSONP就不一一闡述了。我自己将這個項目用在了微信輪播項目中

③、如果B網站是自己的,那麼隻需修改伺服器配置,下面舉例說明IIS設定跨域

打開IIS控制台,找到域名下的“HTTP響應标頭”

Javascript跨域和Ajax跨域解決方案總結

打開http響應頭,分别添加下面2個參數

Access-Control-Allow-Headers:Content-Type, api_key, Authorization

Access-Control-Allow-Origin:*
           
Javascript跨域和Ajax跨域解決方案總結

完成後如下圖

Javascript跨域和Ajax跨域解決方案總結