跨域的幾種方式

2021-07-14 12:20:22 字數 949 閱讀 9849

協議、埠號、網域名稱 都相同才是同乙個域

只要有乙個不同就算是跨域

主網域名稱相同,子網域名稱不同也算跨域

email.qq.com和zone.qq.com就屬於主域相同,子域不同,也算是跨域

需要注意的是:協議不同(eg:https和http)或者埠號不同造成的跨域,前端是無法解決的

實際工作中,尤其是大公司,經常遇到需要跨域的情況

跨域的幾種常見的方式有:

jsonp

window.name+iframe

document.domain

postmessage

下面一一介紹:

jsonp的原理就是動態滴建立script標籤,將script標籤的src的url中傳入要發給其他域伺服器的資料,和接收伺服器返回資料的函式名字

伺服器可以根據接收到的url動態滴處理url返回資料等

比如:

src=」

其中code是要傳給伺服器的資料

callback是你寫的要接收伺服器處理code並返回資料的函式

有更詳細的解釋

利用同乙個視窗中的**共享window.name屬性這一特點,將window.name屬性值設定為要傳輸的值

比如想在a.html中載入data.html中的資料,就需要設定data.html的window.name

不能a自動開啟乙個date.html獲取資料,所以需要在a.html中設定乙個隱藏的iframe接收data.html中的資料,

iframe的src要和data.html一樣

基於iframe實現的跨域要求兩個域具有aa.xx.com,bb.xx.com這種特點,也就是兩個頁面必須屬於乙個基礎域(例如都是***.com,或是***.com.cn),使用同一協議(例如都是 http)和同一埠(例如都是80),這樣在兩個頁面中同時新增document.domain,就可以實現父頁面呼叫子頁面的函式

跨域的幾種方式

原理是自定義http頭部origin,這個部分由瀏覽器控制,這個過程與cookie無關。例如 origin 伺服器判讀origin的值是否在自己白名單當中,如果是,返回access control allow origin 當訪問伺服器的資源為公共資源時,也就是伺服器不限制請求 時,返回access...

跨域的幾種實現方式

jsonp ajax error function 伺服器設定響應頭,允許跨域 一般不建議這樣做 res.header access control allow origin 伺服器 伺服器與伺服器之間沒有跨域問題.可以讓本機伺服器作為 來請求第三方伺服器,然後將第三方伺服器資料返回回來,但是不會攜...

解決跨域的幾種方式

1.document.domain 由於js同源策略的限制,指令碼只能讀取和所屬文件 相同的視窗和文件屬性 對於有公共的上級網域名稱,這些伺服器上的頁面之間的跨域訪問可以通過document.domain來進行 預設document.domain存放的是載入文件的伺服器的主機名,可以手動設定這個屬性...