Nginx Web 浏览器 CORS 问题
Posted
技术标签:
【中文标题】Nginx Web 浏览器 CORS 问题【英文标题】:Nginx Web browser CORS Issues 【发布时间】:2016-12-08 04:16:08 【问题描述】:我正在开发一个使用外部 API 的 AngularJS 应用程序,但遇到了一个奇怪的问题 (CORS)。我做了很多研究都没有解决这个问题。
当我点击我的 API 时,预检请求很好(状态 204 无内容), 但是当服务器响应的状态码不是 2xx(200、204 等)时,我遇到了 CORS 问题。
如果我的服务器发回 2xx 作为状态码是正常的,我们没有 CORS 问题,但如果在此处发送另一个状态码就是问题。
API: Sylex(php 框架)在 Nginx
下运行前端应用: AngularJS - 使用 webpack
XHR 视图:
控制台 CORS 错误:
【问题讨论】:
【参考方案1】:经过一天的搜索,我弄清楚了 CORS 的来源。 nginx 配置没问题。 是 API。
在预检请求(OPTIONS)期间,服务器允许通过请求,因为 NGINX 允许源和标头 (access-control-allow-origin, access-control-allow-headers), p>
但当 API 发回响应时,标头未设置。
我通过在响应中添加 access-control-allow-origin 和 access-control-allow-headers 来修复它。
重要提示:我发现在网络浏览器上的 200 状态代码的响应中数据不可恢复。 要修复它,请删除在其他响应(5xx、4xx 等)中添加的标题 (不知道是不是我的情况)
我还没有开发 API,这就是为什么我需要一天时间才能弄清楚的原因。希望我能帮助这个用例的人:)
【讨论】:
以上是关于Nginx Web 浏览器 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章