什么是跨域?
簡單的來說,出于安全方面的考慮,頁面中的JavaScript無法訪問其他服務(wù)器上的數(shù)據(jù),即“同源策略”。而跨域就是通過某些手段來繞過同源策略限制,實現(xiàn)不同服務(wù)器之間通信的效果。
具體策略限制情況可看下表:
URL | 說明 | 允許通信 |
http://www.a.com/a.js http://www.a.com/b.js |
同一域名下 | 允許 |
http://www.a.com/lab/a.js http://www.a.com/script/b.js |
同一域名下不同文件夾 | 允許 |
http://www.a.com:8000/a.js http://www.a.com/b.js |
同一域名,不同端口 | 不允許 |
http://www.a.com/a.js https://www.a.com/b.js |
同一域名,不同協(xié)議 | 不允許 |
http://www.a.com/a.js http://127.0.0.100/b.js |
域名和域名對應(yīng)ip | 不允許 |
http://www.a.com/a.js http://script.a.com/b.js |
主域相同,子域不同 | 不允許 |
http://www.a.com/a.js http://a.com/b.js |
同一域名,不同二級域名(同上) | 不允許 |
http://www.a.com/a.js http://www.b.com/b.js |
不同域名 | 不允許 |
什么是JSONP?
JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,而JSONP(JSON with Padding)則是JSON 的一種“使用模式”,通過這種模式可以實現(xiàn)數(shù)據(jù)的跨域獲取。
JSONP跨域的原理
在同源策略下,在某個服務(wù)器下的頁面是無法獲取到該服務(wù)器以外的數(shù)據(jù)的,但img、iframe、script等標(biāo)簽是個例外,這些標(biāo)簽可以通過src屬性請求到其他服務(wù)器上的數(shù)據(jù)。利用script標(biāo)簽的開放策略,我們可以實現(xiàn)跨域請求數(shù)據(jù),當(dāng)然,也需要服務(wù)端的配合。當(dāng)我們正常地請求一個JSON數(shù)據(jù)的時候,服務(wù)端返回的是一串JSON類型的數(shù)據(jù),而我們使用JSONP模式來請求數(shù)據(jù)的時候,服務(wù)端返回的是一段可執(zhí)行的JavaScript代碼。
跨域: js有一個同源限制,簡單說來源不一樣的話就無法相互間交互.那么怎么算來源不一樣呢, 舉個例子:瀏覽器訪問-->服務(wù)器A--->得到頁面A---頁面A中的js腳本只能訪問服務(wù)器A的資源(相同域名和端口,此外域名與對應(yīng)的ip也算不同源,要么都域名,要么都ip).
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com