1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > iframe嵌套页面 跨域_跨域解决方案

iframe嵌套页面 跨域_跨域解决方案

时间:2024-04-03 09:35:39

相关推荐

iframe嵌套页面 跨域_跨域解决方案

点击上方蓝色“后端开发杂谈”关注我们, 专注于后端日常开发技术分享

上一篇文章跨域资源共享我们讲到了, 在跨域访问的时候出现的问题, 以及基于跨域共享的方案解决跨域的问题, 那么还有没有其他的技术手段解决跨域的问题呢, 本篇文章一一列举解决跨域问题的所使用的技术手段.

跨域通信的解决手段大致分为两类:

一类是 Hack. 比如通过title,navigation等对象传递信息. JSONP可以说是最优秀的Hack.

另一类是HTML5支持. 一个是Access-Control-Allow-Origin响应头, 一个是window.postMessage

设置 document.domain

原理: 相同主域名不同子域名下的页面, 可以设置document.domain让它们同域

限制: 同域 document 提供的是页面间的互操作, 需要载入iframe页面.

案例:

下面几个域名的页面都是可以通过document.domain跨域操作的:/foo, /bar, /bar. 但只能以页面嵌套的方式进行页面互操作, 比如常见的iframe方式完成页面的嵌套.

// URL /foolet ifr = document.createElement('iframe');

ifr.src = '/bar';

ifr.onload = function(){let ifrdoc = ifr.contentDocument || ifr.contentWindow.document;

ifrdoc.getElementById("foo").innerHTML;

};

ifr.style.display = 'none';document.body.appendChild(ifr);

注意: 上述代码所在的URL是/foo, 它对/bar的DOM访问要求后者将document.domain往上设置一级, 代码如下:

// URL /bardocument.domain = ''

注:document.domain只能从子域设置到主域, 往下设置以及往其他域名设置都是不允许的.

具有 src 属性的标签

原理: 所有具有src属性的HTML标签都是可以跨域的, 包括,.

限制: 需要创建一个DOM对象, 只能用于GET方法.

document.bodyappend一个具有src属性的HTML标签,src属性值指向的 URL会以GET方法被访问, 该访问是可以跨域的.

注: 其实样式表的标签也是可以跨域的, 只要有src或href的HTML标签都有跨域的能力.

不同的HTML标签发送HTTP请求的时机不同.在更改src属性时就会发送请求, 而 `

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。