跨域

由于瀏覽器處于安全考慮,在不同源的情況下,且未被許可時(shí),一個(gè)網(wǎng)頁(yè)使用只允許在本域下的接口交互。不同源的客戶端腳本在沒有明確授權(quán)的情況下,不能讀寫對(duì)方的資源。這就是同源策略。

同源策略(Same origin Policy):

本域的要求包括:

ajax也受到同源策略的束縛。
所以在某些情況下,只能使用JSONP或CORS等方式來解決問題。
需要注意一點(diǎn)的是:對(duì)于當(dāng)前頁(yè)面來說頁(yè)面存放的 JS 文件的域不重要,重要的是加載該 JS 頁(yè)面所在什么域

跨域的幾種實(shí)現(xiàn)形式

JSONP

HTML中的script標(biāo)簽可以引入其他域下的JS(不僅如此,凡是src這個(gè)屬性的標(biāo)簽,如img、script、iframe都具有跨域的能力),利用這個(gè)能力即可做到跨域的效果。
1、定義數(shù)據(jù)處理函數(shù)funN
2、創(chuàng)建script標(biāo)簽,其中src屬性根據(jù)根據(jù)需求設(shè)定
3、由于后端不知道前端數(shù)據(jù)處理函數(shù)的函數(shù)名,所以在src中添加callback=funN
4、當(dāng)后臺(tái)數(shù)據(jù)傳輸過來后,將會(huì)以funN(data)的形式對(duì)funN進(jìn)行調(diào)用,其data則是我們需要的參數(shù)。

CORS(Cross-Origin Resource Sharing)

CORS 全稱是跨域資源共享(Cross-Origin Resource Sharing),是一種 ajax 跨域請(qǐng)求資源的方式,支持現(xiàn)代瀏覽器,IE支持10以上。
1、當(dāng)你使用 XMLHttpRequest 發(fā)送請(qǐng)求時(shí),瀏覽器發(fā)現(xiàn)該請(qǐng)求不符合同源策略,會(huì)給該請(qǐng)求加一個(gè)請(qǐng)求頭:Origin。
2、后臺(tái)在返回結(jié)果中加入一個(gè)響應(yīng)頭:Access-Control-Allow-Origin。
3、瀏覽器判斷該相應(yīng)頭中是否包含 Origin 的值,如果有則瀏覽器會(huì)處理響應(yīng),我們就可以拿到響應(yīng)數(shù)據(jù),如果不包含瀏覽器直接駁回,這時(shí)我們無(wú)法拿到響應(yīng)數(shù)據(jù)。
所以 CORS 的表象是讓你覺得它與同源的 ajax 請(qǐng)求沒啥區(qū)別,代碼完全一樣。

事實(shí)上,只要你去發(fā)送請(qǐng)求,后臺(tái)都會(huì)返回請(qǐng)求,但是瀏覽器會(huì)進(jìn)行驗(yàn)證,你發(fā)送的請(qǐng)求是否是被允許的。

降域

兩個(gè)二級(jí)或以上域名網(wǎng)址想要跨域時(shí),可以通過降域,降至同一層域名,即可跨域。
如:http://a.jrg.comhttp://b.jrg.com之間因?yàn)榉峭矗圆荒芸缬颉T趦蓚€(gè)頁(yè)面下都加入如下代碼,進(jìn)行降域,這兩個(gè)網(wǎng)站則可相互進(jìn)行跨域。

document.domain = 'jrg.com'

postMessage

兩個(gè)不同域名下的頁(yè)面之間,不相互讀取數(shù)據(jù)或進(jìn)行頁(yè)面操作,只是相互發(fā)送數(shù)據(jù),即可用postMassage。

最后編輯于
?著作權(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)容

  • 問答 1.什么是同源策略 ①源(orgin)的定義 以百度為例,輸入localtion.origin就可以得到源P...
    鴻鵠飛天閱讀 486評(píng)論 0 0
  • 什么是同源策略 同源策略/SOP(Same origin policy)是一種約定,由Netscape公司1995...
    YQY_苑閱讀 435評(píng)論 0 0
  • 1、 什么是同源策略 同源策略(Same Origin Policy)是一種約定,它是瀏覽器最核心也是最基本的安全...
    饑人谷_小敏閱讀 495評(píng)論 0 0
  • 題目1: 什么是同源策略 瀏覽器出于安全方面的考慮,只允許與本域下的接口交互。不同源的客戶端腳本在沒有明確授權(quán)的情...
    無(wú)目的閱讀 316評(píng)論 0 0
  • http://www.itdecent.cn/p/a3e1ea5695e7
    QinRenMin閱讀 241評(píng)論 0 0

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