跨域
后续过来补充
http
协议域名端口
当一个源 请求另一个源的数据 请求是没问题的
但是响应以后 浏览器会做同源验证 如果浏览器发现请求的源于当前接收数据的源不一致
那浏览器就会拒绝接收数据
服务端响应头 该响应的资源是否被允许被给定的origin共享
Access-Control-Allow-Origin
服务器端设置响应头的这个字段 可以被前端某些源访问
找一个东西替代ajax发送跨域请求
- 能发http请求
- 不受跨域影响
- 能够处理接收到的数据
例如img link script
script是最优选择
script加载后 会被浏览器js引擎自动执行里头的代码
script两种加载方式
- \
这种加载方式是同步的,加载完成才执行后面的代码
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
其实自己手动配置也可以
