我正在我的网络应用程序中发出跨域请求。
我已经在 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 之外的状态代码无法使用。你可以找到这个在这里的文档中。
你可以使用这个插件来做你想做的事情:
答案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 构建此模块,但一旦编译进去它就可以按预期工作。