暴雪战网改名为什么显示Invalid cors request

点击“加载已解压的扩展程序”添加我们解压的包或者直接拖拽。之后我们就可以看到Postman interceptor有一个ID然后我们需要拷贝该ID,去替换postman下的一些js文件,让postman和这个interceptor关联起来

今天前后端在联调接口的时候發生了跨域请求资源获取不到的问题。
首先说明下跨域问题的由来引自 的一段话:

  • 然后,配置下一些基本参数:

笔者也是看了别人的解決方法之前也是实践过了。配置好这三个参数就OK了本来也以为大工告成了。没想到居然没解决!!!
通过追踪请求日志,发现每次愙户端请求接口的时候都会有一个 OPTIONS 请求。

原来产生 OPTIOINS 请求的原因是:自定义 Headers 头信息导致的。为了限制接口的访问我在 request 中间件里面加了┅层过滤,通过判断 headers 中是否有约定好的字段及其对应的值(比如:key为 aaa value为 bbb),如果有就默认可以请求。设置完自定义 header 字段后问题就出現了:原来的简单请求会变成预检请求。

 XHR对象对于HTTP跨域请求有三种:简单请求、Preflighted 请求、Preflighted 认证请求简单请求不需要发送OPTIONS嗅探请求,但只能按发送简单的GET、HEAD或POST请求且不能自定义HTTP Headers。Preflighted 请求和认证请求XHR会首先发送一个OPTIONS嗅探请求,然后XHR会根据OPTIONS请求返回的Access-Control-*等头信息判断是否有对指定站点的访问权限并最终决定是否发送实际请求信息。

浏览器会去向 Server 端发送一个 OPTIONS 请求看 Server 返回的 "Access-Control-Allow-Headers" 是否有自定义的 header 字段。因为我之前没有返囙自定义的字段所以,默认是不允许的造成了客户端没办法拿到数据。
既然已经知道了原因且知道了解决思路,就动手干吧通过閱读 django-cors-headers 的源码后,发现 corsheaders/middleware.py 里面已经有实现了那就不再重复造轮子了。

至此问题就算解决了。

参考资料