踩坑背景
工作中要求提供一个restfull接口给外部获取信息,开开心心得编译py,捣鼓证书。
不久后,客户大喊拉闸。
啥是跨域啊?
简单的说就是我现在在www.a.com的域名站点下,但是我企图访问一个www.b.com的资源,这时候浏览器就称这种行为为跨域。
跨域问题出现:XMLHttpRequest at '‘ has been blocked by CORS policy
如何处理引用:浏览器跨域 Access-Control-Allow-Headers 问题 - 掘金
坑坑复现
客户在自己的web系统前端访问了我的接口,获取了特定的数据参与逻辑。而他们说死活报错,报错相关信息是跨域问题。
1、浏览器打开 b.test.com
域名,按 F12
进入控制台
(Console), 输入如下代码然后回车回车,在网络(Network)即可查看到相应的请求结果。
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://localhost:8090/agent',true);
xhr.setRequestHeader("aaa", "application/json")
xhr.setRequestHeader("hbb", "application/json2")
xhr.send('')
xhr.onload = function(e) {
var xhr = e.target;
console.log(xhr.responseText);
}
跨域处理
1、其实跨域操作在发起请求前会提前发送一个 OPTIONS 方法的请求,而该请求头和响应头内包含数据。
2、注意除开options方法,请求数据的方法中响应头中也应带上该响应头的数据。