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: Sylexphp 框架)在 Nginx

下运行

前端应用AngularJS - 使用 webpack

XHR 视图:

控制台 CORS 错误:

【问题讨论】:

【参考方案1】:

经过一天的搜索,我弄清楚了 CORS 的来源。 nginx 配置没问题。 是 API。

在预检请求(OPTIONS)期间,服务器允许通过请求,因为 NGINX 允许源和标头 (access-control-allow-origin, access-control-allow-headers), p>

但当 API 发回响应时,标头未设置。

我通过在响应中添加 access-control-allow-originaccess-control-allow-headers 来修复它。

重要提示:我发现在网络浏览器上的 200 状态代码的响应中数据不可恢复。 要修复它,请删除在其他响应(5xx、4xx 等)中添加的标题 (不知道是不是我的情况)

我还没有开发 API,这就是为什么我需要一天时间才能弄清楚的原因。希望我能帮助这个用例的人:)

【讨论】:

以上是关于Nginx Web 浏览器 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章

73.nginx跨域

Nginx解决跨域问题(CORS)

Nginx通过CORS实现跨域(转)

AngularJS + Nginx CORS

springBoot:web开发-CORS支持

谷歌浏览器 65 CORS 问题