(I)の定義
⑴クロスドメインは、ブラウザがスクリプト、他のサイトを実行できないことを意味します。
⑵これは、ブラウザの同一生成元ポリシーによって引き起こされる、JavaScriptの実装にブラウザのセキュリティ制限されています。
(ii)のクロスドメインのシナリオによって引き起こされます
① 異なるポートで異なるドメイン名の異なるプロトコル
②プロトコル、ドメイン名、ポートとは何ですか?
説明:URLがある場合http://baidu.com:8080?user=name&pwd=password
http://プロトコルであります
baidu.comドメイン名(注:「WWWW」が先行したドメイン名ではありませんwww.baidu.com)
8080はポートです
ユーザー=名&PWD =パスワードパラメータは、テープのアドレスです
⑴別のドメイン名(ドメイン名とIPアクセスは、クロスドメインを引き起こす可能性があります)
http://www.baidu.com
http://www.case.com
⑵異なるサブドメイン
http://www.example.com
http://a.example.com
⑶異なるポート
http://www.example.com(:80)
http://www.example.com(:8080)
⑷異なるプロトコル
http://www.example.com
https://www.example.com
(III)のクロスドメインアクセスを達成する方法
⑴JSONP跨域
⑵iFrame跨域
⑶协议跨域 (跨域资源访问CORS)
㈣JSONPクロスドメイン
⑴原理: 利用script标签src可以用外链的功能。
即:<script src="http://www.external.com/link/action.js"></script>
⑵必要条件:
1、 externalLink返回的内容必须为一段可执行脚本
2、 当前域同外域约定好脚本执行的函数名
(jsonpCallback)
3、 传入函数的实参data
次のように⑶形式は
コンテンツaction.js:
jsonpCallback(データ)。
データの種類:番号 | 文字列 | ブール| オブジェクト
現在のドメインの関数の宣言:
jsonpCallback(結果){
/ * コードの文* /
}
㈤iFrameクロスドメイン
iframe存在页面嵌套关系,即会有父页面(outer.html)和子页面(inner.html)。
这样就存在父页面使用子页面的数据,子页面使用父页面数据的情况。
1. 非一个根域:
需要一个中间页面做代理,通过window.name获取不同域页面下的数据.
原理: iframe加载不同的src,window.name是可以被传递的。
父页面: lichenfan.com
子页面: innomachine.com.cn
父页面--->子页面数据
1) load 子页面,子页面设置window.name.
2) load 代理页面,代理页面和父页面同域。
子页面--->父页面数据
load 子页面,给子页面的页面路径修改不同的hash
子页面定义window.onhashchange的事件,触发获取数据。
2. 同一个根域:
www.lichenfan.com 和 sen.lichenfan.com
在当前的文档下设置 document.domain = "lichenfan.com" 即可。
父页面--->子页面数据
window.iframe.contentWindow.xx;
子页面--->父页面数据
window.parent.xxx;
(VI)は、クロスドメインプロトコル
被访问域名在webservice配置跨域访问的header即可,
会用到两个header。
Access-Control-Allow-Origin: * | 访问域名;
Access-Control-Allow-Methods: GET | POST | PUT | DELETE;
参考:https://zhuanlan.zhihu.com/p/24632196