JS跨域

什么是跨域

網(wǎng)絡(luò)間的通信有同源策略,從一個(gè)源加載的腳本或文件如何和另外一個(gè)源的腳本進(jìn)行交互。這是用于隔離潛在惡意文件的的關(guān)鍵安全機(jī)制
同源:是指主機(jī)名,協(xié)議,端口組成組合必須相同,不同源的話會(huì)Cookie,localStorage,IndexDB無法讀取,DOM無法獲得,AJAX不能發(fā)送請(qǐng)求

前后端通信

1:ajax 2:webSocket(不受同源策略限制) 3:CORS(新的通信標(biāo)準(zhǔn))
跨域的幾種方式:
1: JSONP 2:Hash 3:postMessage(HTML5) 4:webSocket 5;CORS

  1. JSONP 利用script的標(biāo)簽的異步加載特性特性實(shí)現(xiàn),給服務(wù)器傳一個(gè)回調(diào)函數(shù),服務(wù)器執(zhí)行完后返回一個(gè)傳遞過去的回調(diào)函數(shù)的js代碼
  2. Hash 是頁面嵌套 在目標(biāo)頁面進(jìn)行onhashchange 監(jiān)控
  3. postMessage(),窗口A(http:A.com)向跨域的窗口B(http:B.com)發(fā)送信息 例如 3.3
  4. websocket var ws = new WebSocket("wss://self.org") 監(jiān)聽 onOpen onMessage onClose事件
  5. HTML5的fechtch API
  6. 后臺(tái)配置
  7. form 直接進(jìn)行表單提交
  8. cors http://www.ruanyifeng.com/blog/2016/04/cors.html
    例子3.3 窗口A(http:A.com)向跨域的窗口B(http:B.com)發(fā)送信息
    BWindow.postMessage('data','http://B.com')
    Awindow.addEventListener('message',funciton(event){
    ? console.log(event.origin)
    console.log(event.source)
    ? console.log(event.data)
    })
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Section1、為什么要跨域? 自古以來(1995年起),為了用戶的信息安全,瀏覽器就引入了同源策略。那么同源策...
    qhaobaba閱讀 467評(píng)論 0 0
  • Section1、為什么要跨域? 自古以來(1995年起),為了用戶的信息安全,瀏覽器就引入了同源策略。那么同源策...
    不去解釋閱讀 687評(píng)論 0 0
  • <轉(zhuǎn)>詳解跨域(最全的解決方案) 什么是跨域跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,...
    涅槃快樂是金閱讀 5,075評(píng)論 0 3
  • 這里說的js跨域是指通過js在不同的域之間進(jìn)行數(shù)據(jù)傳輸或通信,比如用ajax向一個(gè)不同的域請(qǐng)求數(shù)據(jù),或者通過js獲...
    饑人谷_林嘉俊閱讀 506評(píng)論 0 1
  • 一周之初事多磨,忽覺時(shí)光日如年。 不是時(shí)光慢如沙,只因心中有盼頭。
    逐夢(mèng)人生閱讀 314評(píng)論 3 4

友情鏈接更多精彩內(nèi)容