常见的跨域解决方案(一)

JSONP 解决跨域

JSONP跨越的优缺点

  • 缺点:JSONP跨域只支持get请求方式同时可能会收到XSS攻击
  • 优点:兼容性好

实现过程

  • 声明一个回调函数,函数的形参为跨域服务器返回的数据
  • 将请求的url赋值给script的src属性,同时将回调函数的名称作为参数传入(通过?传参)
  • 服务器需要将回调函数名和返回的数据拼接成字符串返回
  • 客户端接收到数据执行回调函数,处理数据

CORS解决跨域

CORS跨域的优缺点

  • 优点:支持所有请求方式,保证请求安全性
  • 缺点:不支持IE8以下浏览器

实现

  • 主要由后端实现,服务器设置 Access-Control-Allow-Origin ,该属性表示允许哪个域名访问,*代码允许所有
  • 前端发送post请求时需要设置Content-Type 为application/x-www-form-urlencoded

postMessage解决跨域

postMessage()是html5提供的API

// 参数1: 传递的数据
// 参数2: 请求的协议+域名+端口号+[url],字符串形式
// 参数3: 可选参数,Transferable对象,该参数会将Transerable对象的所有权转移给接收方,发送方失去控制权
otherWindow.postMessage(message,targetOrigin,[transfer])
复制代码

转载于:https://juejin.im/post/5ceba7b4f265da1b916371af

猜你喜欢

转载自blog.csdn.net/weixin_34355559/article/details/91417229
今日推荐