前端跨域问题及解决方案
2023-04-30 来源:飞速影视
1、同源策略
同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。一个源的定义:如果协议,端口(如果指定了一个)和主机对于两个页面是相同的,则两个页面具有相同的源。下表给出了相对
http://store.company.com/dir/page.html
同源检测的示例:
2、主域相同的跨域
document.domain 的场景只适用于不同子域的框架间的交互,及主域必须相同的不同源。
页面可能会更改其自己的来源,但有一些限制。脚本可以将 document.domain 的值设置为其当前域或其当前域的超级域。如果将其设置为其当前域的超级域,则较短的域将用于后续原始检查。例如,假设文档中的一个脚本在 http://store.company.com/dir/other.html 执行以下语句:
document.domain = "company.com";
这条语句执行之后,页面将会成功地通过对 http://company.com/dir/page.html 的同源检测。
注:浏览器单独保存端口号。任何的赋值操作,包括 document.domain = document.domain 都会以 null 值覆盖掉原来的端口号。因此,company.com:8080 页面的脚本不能仅通过设置 document.domain = "company.com" 就能与 company.com 通信。赋值时必须带上端口号,以确保端口号不会为 null。
(1) 在www.a.com/a.html中:document.domain = "a.com";var ifr = document.createElement("iframe");ifr.src = "http://www.script.a.com/b.html"; ifr.display = none;document.body.appendChild(ifr);ifr.onload = function(){ var doc = ifr.contentDocument || ifr.contentWindow.document; ifr.onload = null;};(2) 在www.script.a.com/b.html中:document.domain = "a.com";//注意:
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号