どのようなクロスドメインはい?どのように達成するために?

(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://14.215.177.38

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

 

おすすめ

転載: www.cnblogs.com/shihaiying/p/12153201.html