我正在寻找一个 nginx 配置设置来设置Access-Control-Allow-Origin
到收到的值Origin
.
看来*
该方法不适用于 Chrome,并且多个 URL 不适用于 Firefox,因为 CORS 规范不允许这样做。
到目前为止,唯一的解决方案是设置Access-Control-Allow-Origin
到源中收到的值(是的,可以实施一些验证)。
问题是如何在 nginx 中执行此操作,最好不安装额外的扩展。
set $allow_origin "https://example.com"
# instead I want to get the value from Origin request header
add_header 'Access-Control-Allow-Origin' $allow_origin;
Using if
有时会破坏其他配置,例如try_files
。您可能会遇到意想不到的 404。
使用地图代替 https://serverfault.com/a/674901/77854
map $http_origin $cors_header {
default "";
"~^https?://[^/]+\.example\.com(:[0-9]+)?$" "$http_origin";
}
server {
...
location / {
add_header Access-Control-Allow-Origin $cors_header;
try_files $uri $uri/ /index.php;
}
...
}
如果是邪恶的 http://wiki.nginx.org/IfIsEvil
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)