js 幾種跨域解決方法


同源策略:

JS只能與同一個域中的頁面進行通訊,必須是協議、域名、端口都相同,相同域下才能相互通信,這可以被認為是一種通信原則,叫同源策略。

跨域:

js跨域是指通過js在不同的域之間進行數據傳輸或通信,比如用ajax向一個不同的域請求數據,或者通過js獲取頁面中不同域的框架中(iframe)的數據。只要協議、域名、端口有任何一個不同,都被當作是不同的域。

下表給出了相對http://store.company.com/dir/page.html同源檢測的結果:

 

四種方法解決跨域:

1、jsonp;

jsonp跨域請求類似於ajax的get請求,比如請求地址url= 'localhsot:8080/search.php?callback=getremotedata',注意jsonp后面的callback參數,請求是必帶

2、document.domain;

document.domain也可以解決跨域,不過只能是子域名間的跨域,這個要注意

3、window.name;

先介紹下window.name,window對象有個name屬性,只要是當前頁面載入過的所有頁面都是共享window.name,每個頁面都有對window.name的讀寫權限。其借助iframe中介進行數據通信

4、h5 postMessage

html5提供的方法,缺點是IE8+才支持,主要是通過父子間通過iframe進行相互通訊

建議使用window.name,它沒有瀏覽器兼容性問題,而且使用不復雜,或者用jsonp實現跨域獲取數據,具體的話可以百度搜索案例實際操作下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM