码迷,mamicode.com
首页 > 其他好文 > 详细

跨域方式

时间:2018-06-27 21:08:23      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:script   TE   发送数据   文件   dde   传参   post   policy   eth   

http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.html

document.domain + iframe

  • 实现父页面与其内部 iframe 页面通讯,要求一级域名相同
  • 两个页面设置 document.domain 为相同的一级域名,不包含二级域名

location.hash + iframe

  • 实现父页面A与其内部 iframe 页面B通讯,需要与页面A同源的中转页C,并且页面C是通过页面B的 iframe 加载
  • 父页面A监听自身 location.hash 的变化。页面A的 iframe 加载通讯页面B,并在地址中加入 #参数
  • 通讯页面B监听自身 location.hash 的变化,给出响应,创建 iframe 加载页面C在地址中加入 #回传参数
  • 中转页C通过 parent.parent.location.hash 语句来修改父页面A的 location.hash 值,实现通讯

window.name + iframe

  • 实现父页面A与其内部 iframe 页面B通讯,需要与页面A同源的中转页C,name 值在不同的域名加载后依旧存在,并且可以支持 2MB
  • iframe 加载页面B写入 window.name 并跳转到页面C
  • 页面C与页面A同源,可以获取页面C的 window.name 并且返回给页面A

window.postMessage + iframe

  • 实现父页面A与其内部 iframe 页面B通讯
  • 双方通过 window.addEventListener(‘message‘, onMessage, false) 监听数据
  • 双方通过在对方的 window 上执行 postMessage(‘hello world!‘, "*") 发送数据,要求 postMessage 第二个参数符合对方的域名

CORS

  • 页面无法设置
  • 服务器返回响应头中设置 Access-Control-Allow-Origin: *
  • 服务器返回响应头中设置 Access-Control-Allow-Headers: Origin,X-Requested-With,Content-Type,Accept,Last-Modified
  • 服务器返回响应头中设置 Access-Control-Allow-Methods: POST,GET,OPTIONS,HEAD
  • Access-Control-Allow-Methods 中不要包含 PUT 和 DELETE 会对安全有影响,GET、POST、HEAD 是基本方法,不设置也会生效。

JSONP

  • 动态创建 script 标签,在 src 中加入函数名称参数,并且创建该函数,函数的参数将返回数据。
  • 服务器识别 src 中函数名称参数,拼接函数名称并把数据写入函数调用参数中返回。
  • script 标签接收服务器返回 js 文件,执行函数调用。

WebSocket

  • 浏览器的 API ,提供全双工、双向通信、只能与 WebSocket 服务通讯。

跨域方式

标签:script   TE   发送数据   文件   dde   传参   post   policy   eth   

原文地址:https://www.cnblogs.com/xingkongbj/p/9235739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!