首頁 > web前端 > js教程 > web開發跨域的使用方法

web開發跨域的使用方法

php中世界最好的语言
發布: 2018-04-18 10:00:09
原創
1654 人瀏覽過

這次帶給大家web開發跨域的使用方法,web開發跨域使用的注意事項有哪些,下面就是實戰案例,一起來看一下。

在大家進行web開發過程中,對於跨域都會有接觸,很多人不是很了解跨域是什麼,對於web開發中的跨域怎麼解決。以下文章就此給大家具體介紹下,感興趣的一起來了解下跨域以及跨域的解決。

什麼是跨域?

概念如下:只要協定、網域、連接埠有任何一個不同,都被當作是不同的網域

以下是具體的跨域情況詳解

# 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 同一域名,不同協定 不允許
# http://www.a.com/a.js、http://70.32.92.74/b.js 域名和域名對應ip 不允許
# http://www.a.com/a.js、http://script.a.com/b.js 主域相同,子域不同 不允許(cookie這種情況下也不允許存取)
# http://www.a.com/a.js、http://a.com/b.js 同一域名,不同二級域名(同上) 不允許(cookie這種情況下也不允許存取)
# http://www.cnblogs.com/a.js、http://www.a.com/b.js 不同域名 不允許
#

一、document.domain跨域

# 原理:相同主網域不同子網域下的頁面,可以設定document.domain讓它們同域

限制:同域document提供的是頁間的互通,需要載入iframe頁面

下面幾個網域下的頁面都是可以透過document.domain跨網域互通的: http://a.com/foo, http://b.a.com/bar, http://c.a.com/bar。但只能以頁面嵌套的方式來進行頁面互通,例如常見的iframe方式就可以完成頁面嵌套

// URL http://a.com/foo
var ifr = document.createElement('iframe');
ifr.src = 'http://b.a.com/bar'; 
ifr.onload = function(){
    var ifrdoc = ifr.contentDocument || ifr.contentWindow.document;
    ifrdoc.getElementsById("foo").innerHTML);
};
ifr.style.display = 'none';
document.body.appendChild(ifr);
登入後複製

上述程式碼所在的URL是http://a.com/foo,它對http://b.a.com/bar的DOM存取要求後者將 document.domain往上設定一級

// URL http://b.a.com/bar
document.domain = 'a.com'
登入後複製

document.domain只能從子域設定到主域,往下設定以及往其他網域設定都是不允許的, Chrome給出的錯誤是這樣的

Uncaught DOMException: Failed to set the 'domain' property on 'Document': 'baidu.com' is not a suffix of 'b.a.com'

二、有src的標籤

原理:所有具有src屬性的HTML標籤都是可以跨域的,包括,

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板