今天早上在地鐵看了點基礎知識的考察題,看到了乙個js跨域的問題,仔細想了想自己腦子裡竟然只剩下jsonp跨域和用nginx反向**進行跨域,想著還有別的幾種方法,就是想不起來,這個人呢,一上歲數這個腦子就不好使,為了防止下次又遺忘了,所以特意寫一篇隨筆來記錄一下js中實現跨域的方式
1.jsonp請求
2.document.domain
3.window.name
4.window.postmessage
5.cors
6.web sockets
7.使用伺服器進行反向**
jsonp請求
jsonp的原理時利用script標籤的跨域特性,可以不受限制的從其他域中載入資源,類似的標籤還有
,具體的使用方法在我前面的博文中已經寫過,
注意:jsonp只支援get請求而不支援其他型別的請求
doucment.domain
這種方式主要用在主網域名稱相同,子網域名稱不同的情況下
window.name
window的name屬性有個特徵:在乙個視窗(window)的生命週期內,視窗所載入的所有頁面都是共享乙個window.name,每個頁面對window.name都有讀寫許可權,window.name是持久存在乙個視窗載入過的所有頁面中的,並不會因新頁面的載入而進行重置
window.postmessage
window.postmessage是html5中實現跨域訪問的一種新方式,可以使用它來向其他的window物件傳送訊息,無論這個window物件是屬於同源還是不同源
cors
cors背後的基本思想,就是使用自定義的http頭部讓瀏覽器和伺服器進行溝通,從而決定請求或響應是應該成功還是應該失敗,
這個需要伺服器設定header :access-control-allow-origin即可
websocket
websocket的原理:在jschuangjianlewebsocket之後,會有乙個http請求傳送到瀏覽器以發起鏈結,取得伺服器響應後,建立的連線會使用http公升級從http協議交換為websocket協議
使用伺服器進行反向**
我個人常用的nginx進行反向**,之前也試過用nodejs自己搭建乙個伺服器進行反向**,具體的步驟暫時不詳述,各位可以搜一下,一搜一大堆
好了,暫時的話就這些,但是我在工作中常用的還是最後一種用nginx伺服器進行反向**
js中的跨域方法總結
什麼是跨域?瀏覽器的安全策略,只要協議,網域名稱,埠有任何乙個不同,就被當做不同的域。下面對的同源檢測 a.html 同源 b.html 同源 8080 不同源 不同源 不同源 1,jsonp方法 2,document.domain 原理 document.domain設定成相同的網域名稱,來訪問i...
JS中關於跨域及實現方法
提起跨域,我們要先了解一下同源政策,需要明確一點的是,同源政策是針對於瀏覽器的,不是針對js 同源策略限制從乙個源載入的文件或指令碼如何與來自另乙個源的資源進行互動。這是乙個用於隔離潛在惡意檔案的關鍵的安全機制。mdn 通俗來講就是瀏覽器出於安全方面的考慮,只允許與本域下的接 互。不同源的客戶端指令...
js 跨域總結
1.window.domain 強制設定相關頁面 window.domain相同 a.html document.domain a.com b.html document.domain a.com 2.window.name 同一視窗,動態改變鏈結 window.name 是不變的,最多保留2m資料...