我正在尝试发送多个标头
add_header Access-Control-Allow-Origin http://dev.anuary.com;
add_header Access-Control-Allow-Origin https://dev.anuary.com;
Run Code Online (Sandbox Code Playgroud)
然而,NGINX 将它们变成了
Access-Control-Allow-Origin: http://dev.anuary.com, https://dev.anuary.com
Run Code Online (Sandbox Code Playgroud)
解决办法是什么?
Sha*_*den 34
嗯,是的,nginx 正在组合同名的标头......但它是根据 HTTP 规范这样做的。 见第 4.2 节。
标题:
Access-Control-Allow-Origin: http://dev.anuary.com, https://dev.anuary.com
Run Code Online (Sandbox Code Playgroud)
根据 HTTP/1.1 规范,在功能上等同于:
Access-Control-Allow-Origin: http://dev.anuary.com
Access-Control-Allow-Origin: https://dev.anuary.com
Run Code Online (Sandbox Code Playgroud)
如果您的系统或应用程序能够读取一种格式而不能读取另一种格式,那么这就是问题所在。nginx 做得对。
编辑:
在Mozilla的文件规定,只能有一个Access-Control-Allow-Origin
头。
它的格式(见这里)应该是一个以空格分隔的起源列表:
add_header Access-Control-Allow-Origin "http://dev.anuary.com https://dev.anuary.com";
Run Code Online (Sandbox Code Playgroud)
但实际上,您应该回Origin
显客户端提供的标头,而不是突然生成一个标头。这可能更合适:
if ($http_origin ~* "^https?://dev\.anuary\.com$" ) {
add_header Access-Control-Allow-Origin $http_origin;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
71979 次 |
最近记录: |