如果服务返回错误,则 Nginx 服务无法进行跨域请求

如果服务返回错误,则 Nginx 服务无法进行跨域请求

我正在我的网络应用程序中发出跨域请求。

我已经在 Nginx 上设置了 CORS 标头。一切运行正常,但当服务返回 404、400、500 等错误时,服务会失败并显示一条错误消息,指出Origin *********** is not allowed by Access-Control-Allow-Origin

你知道为什么会发生这种情况吗?

nginx 设置如下;

location /api {
    add_header Access-Control-Allow-Origin *;
}

答案1

不幸的是,add_header除了 200、204、301、302 或 304 之外的状态代码无法使用。你可以找到这个在这里的文档中

你可以使用这个插件来做你想做的事情:

https://www.nginx.com/resources/wiki/modules/headers_more/

答案2

您可以使用总是指令启动 nginx 1.7.5 (* 功能:“add_header”指令的“always”参数。)

add_header 'Access-Control-Allow-Origin' '*' always;

答案3

我可以确认headers_more模块(在中提到这个答案) 可用于为所有 HTTP 响应添加标头,无论状态代码如何。

笔记:您可能需要解决方法https://github.com/openresty/headers-more-nginx-module/issues/24在 Windows 上使用 Nginx 构建此模块,但一旦编译进去它就可以按预期工作。

相关内容