Nginx Web 浏览器 CORS 问题

Nginx Web browser CORS Issues

我正在开发一个使用外部 API 的 AngularJS 应用程序,我遇到了一个奇怪的问题 (CORS)。我做了很多研究都没有解决这个问题。

当我点击 API 时,预检请求正常(状态 204 无内容), 但是当服务器响应另一个状态代码而不是 2xx(200、204 等...)时,我遇到了 CORS 问题。

如果我的服务器发回 2xx 作为状态代码,我们没有 CORS 问题,但如果在这里发送另一个状态代码,那就是问题。

API : Sylex(PHP框架)运行下Nginx

前台申请 : AngularJS - 使用 webpack

XHR 视图:

控制台 CORS 错误:

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

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

但是当 API 发回响应时 header 没有设置。

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

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

我还没有开发 API 这就是为什么我花了一天时间才弄明白的原因。希望我能帮助这个用例的人:)