跨域方案浅析

跨域

后续过来补充

http

协议域名端口

当一个源 请求另一个源的数据 请求是没问题的

但是响应以后 浏览器会做同源验证 如果浏览器发现请求的源于当前接收数据的源不一致

那浏览器就会拒绝接收数据

服务端响应头 该响应的资源是否被允许被给定的origin共享

Access-Control-Allow-Origin

服务器端设置响应头的这个字段 可以被前端某些源访问

找一个东西替代ajax发送跨域请求

  • 能发http请求
  • 不受跨域影响
  • 能够处理接收到的数据

例如img link script

script是最优选择

script加载后 会被浏览器js引擎自动执行里头的代码

script两种加载方式

  1. \

这种加载方式是同步的,加载完成才执行后面的代码

  1. let scriptEle = document.createElement(‘script’)

    scriptEle.src = “xxx.api”

    document.body.appendChild(scriptEle)

    console.log(1)

这种动态加载方式是异步的,没加载完就会执行后续代码,解决方式:加载完成后再调

scriptEle.onload = ()=>{console.log(1)}

JSONP json with pending

JSONP 是一种
【请求一段 JS 脚本,把执行这段脚本的结果当做数据】

jsonp是通过script发送的请求,只能是get,不可能带其他字段不可能带正文呀,因为script标签只有src源

后端代理 这个是最强的 (后端发请求 不涉及跨域问题 后端无同源策略

服务端也可以发送http请求 例如node的http模块

const req = http.request(‘http://localhost:8080/getdata’,res=>{

res.on(‘data’,chunk=>{console.log(chunk)})

res.on(‘end’,chunk->{console.log(‘数据接收完成’)})

})

//发送

req.write(‘’);

req.end();

vue-proxyTable 简单配置 changeOrigin: true

最新的vue-cli3.0 配置好像是proxy而不是proxyTable?

CORS

Cross-Origin Resource Sharing 跨来源资源共享


koa使用第三方模块 koa2-cors

https://www.jianshu.com/p/5b3acded5182

其实自己手动配置也可以

Author: superman285
Link: https://skr.dog/2018/12/18/跨域方案浅析/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.