JavaScript 的同源策略

JavaScript 的同源策略

同源:协议、域名、端口全部相同才是同源,考虑到安全性,不同源之间不能够进行数据通信
解决不同源通信问题:

①通过 iframe,虽然 iframe 属性中 sandbox 将安全性提升到了最高,但是我们可以通过他的不同的属性值开放
不同的安全方面的限制。通过 allow-same-origin 以及 allow-scripts 开放出来对不同源之间数据的传递以及
cookie 或 localstorage 的信息共享
②在 Ajax 使用方面,不同源意味着发送请求出现 Access-Control-Allow-Origin 访问拒绝的提示,解决办法如
下:
如果服务器方是我们自己的,那么可以通过跨域资源共享(CORS)来进行设置请求头 Access-ControlAllow-Origin:域名或者*来进行开发这部分权限,达到不同源的数据共享
如果服务器是别人的,我们可以通过 proxy 来实现桥接,首先我们和自己的服务是同源的,那么我们携带
请求的 URL 及参数,同源服务器进行代理请求,处理数据,然后返回给我们自己,实现不同源之间的数据共 享
script 标签的 src 属性特性是不同源照样可以下载进行页面加载,我们可以通过动态添加 script 方式,携 带一个回调函数名,并在 script 中提前把这个回调函数写好,将请求发送到不同源的服务端,服务端返回这个
没有经过执行的回调函数,中间包含我们需要的数据,当返回客户端的时候,我们提前写好的回调函数直接调
用,即可获取到不同源之间返回的数据,实现资源共享
③通过 window.name 来进行跨域,在一个窗口的生命周期内,窗口载入的所有页面共享一个 window.name
④通过 H5 新增的新特性 postMessage()来进行跨域窗口处理数据

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值