NGiNX - 没有为错误返回足够的标头(4xx,5xx)与成功(2xx)
Posted
技术标签:
【中文标题】NGiNX - 没有为错误返回足够的标头(4xx,5xx)与成功(2xx)【英文标题】:NGiNX - Not returning sufficient headers for error(4xx, 5xx) Vs Success(2xx) 【发布时间】:2019-04-03 02:54:00 【问题描述】:朋友们好,
我在同一 context
但从 angular
的角度独立询问 a question。
请参考我的nginx
服务器configuration。
我正在逐步解决的是,每当我的Angular
应用程序的REST
请求成功(200) 从服务器返回(NGiNX
安装位置) 在这种情况下 NGiNX
返回 sufficient headers
和 response
并且我能够成功处理它Vs 错误请求/响应。
特殊情况是,我无法获得request status
。 例如,如果我的 API 返回 401, 400, 500..
except 200 在这种情况下,我的 angular
App
将 http response-status
作为“零( 0)",无论服务器返回什么。我的主要假设是由于要么 CORS
问题(主要是所有建议修复)或一些隐藏的问题(对我来说)。
在 Angular 中,我可以看到以下内容(请参阅屏幕截图),
我的假设是,如果 CORS 问题,那么我的 200 请求响应也必须 不是服务器。所以我的猜测是我配置正确的 CORS。
任何帮助将不胜感激!
注意 -
-
我很困惑是
NGiNX
方面的问题还是Angular
方面。这就是为什么我在不同的标签下问同样的问题(Angular, Nginx
)。
我还在服务器端实现了 SSL。所以也请考虑这个案例。
【问题讨论】:
【参考方案1】:要为 4xx 和 5xx 错误添加标头:设置标头时,必须使用always
参数:
add_header <header_name> <value> always
请参阅http://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header 的文档:
如果响应代码等于 200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 (1.1.16, 1.0.13) 或308 (1.13.0)…如果指定
always
参数(1.7.5),无论响应码如何,都会添加头部字段。
【讨论】:
以上是关于NGiNX - 没有为错误返回足够的标头(4xx,5xx)与成功(2xx)的主要内容,如果未能解决你的问题,请参考以下文章
Azure API 管理不会在 4xx 上发送 CORS 标头
5xx 或 4xx 错误,“不存在 'Access-Control-Allow-Origin' 标头”
5xx 或 4xx 错误,“不存在 'Access-Control-Allow-Origin' 标头”