HTML5 实现跨域消息传递

同源策略限制了浏览器中不同源之间的交互,但HTML5的postMessage方法提供了解决这一问题的方式。通过设置targetOrigin指定目标窗口,可以实现跨域消息传递。即使在某些浏览器中仅支持字符串参数,通过JSON.stringify()也能处理复杂对象。当需要向任意窗口发送消息时,可以将targetOrigin设为"*",同源窗口间则可以设置为"/"。
摘要由CSDN通过智能技术生成

同源策略

要理解跨域,首先要知道同源策略。所谓同源策略:是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少同源策略,则浏览器的正常功能可能受到影响。可以说,WEB是构建在同源策略上的。

同源:如果两个URL的域名、协议、端口相同,则表示它们同源。

浏览器的同源策略,限制了来自 不同源的"文档"或脚本当前文档读取或设置属性。也就是其它源的文档或脚本不能对当前文档进行设置属性和读取操作。根据这个策略,a.com域名下的JavaScript无法跨域操作b.com域名下的对象。比如:baidu.com域名下的页面中包含的JavaScript代码不能访问Google.com域名下的页面内容。

同源策略在现实生活中是十分重要的。比如:假设攻击者利用iframe把真正的银行登录页面嵌到自己的页面上,当用户使用真正的用户名、密码登录时,该页面的JavaScript会读取用户表单中的内容,这是不安全的。

在浏览器中,<script>、<link>、<img>、<iframe>等标签都可以加载跨域资源,不受同源策略限制。但是通过" src"加载的资源,浏览器限制了JavaScript的权限、不能进行任何的读写操作。从而,即使请求成功了,数据回来了也是取不到的。

一些浏览器窗口和标签之间都是完全相互独立的,在 其中一个窗口或者标签运行的代码其它窗口或标签中是完全无法识别的。但在一些情况下,当脚本打开一个新窗口或者在嵌套的窗体中运行的时候,多个窗口之间、窗体之间是可识别的。如果 它们的文档是在同一个WEB服务器下,那么各个窗口中的脚本是可以相互交互和相互操作对方的页面的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值