Jus*_*tin 9 security nginx http-headers
随着nginx我可以指定Access-Control-Allow-Origin使用像一个通配符*.mydomain.com?
它看起来像:
add_header Access-Control-Allow-Origin *.mydomain.com;
Run Code Online (Sandbox Code Playgroud)
谢谢。
小智 9
你必须用 if 条件来做
location / {
set $cors "";
if ($http_origin ~* (\.mydomain\.com|\.myseconddomain\.com)$) {
set $cors "true";
}
proxy_pass http://backend:10005/apathifyouwantso/;
if ($cors = "true") {
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep-Alive,Content-Type';
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
根据nginx中的条件设置“Access-Control-Allow-Origin”是非常危险的,你应该小心。上面的答案是打开一个安全漏洞。
if ($http_origin ~* (\.mydomain\.com|\.myseconddomain\.com))
Run Code Online (Sandbox Code Playgroud)
此行将匹配something.mydomain.com以及something.mydomain.com.anyotherdomain.com(任何人都可以创建的域)
这样做,将允许以下场景:
fetch。所有这些都是因为正则表达式末尾缺少一个“$”。
if ($http_origin ~* (\.mydomain\.com|\.myseconddomain\.com)$)
Run Code Online (Sandbox Code Playgroud)
这不是使特定正则表达式变坏的唯一方法,这就是为什么我解释这个问题,而不是仅仅在前面的答案中添加 $
你当然可以。我使用以下指令来支持我们的一些跨域字体:
add_header Access-Control-Allow-Origin *;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21092 次 |
| 最近记录: |