nginx strict-origin-when-cross-origin 如何修改代理
时间: 2024-11-14 21:14:58 浏览: 29
`strict-origin-when-cross-origin` 是 Nginx 中的一个配置选项,它用于控制跨源资源共享 (Cross-Origin Resource Sharing, CORS) 的安全策略。当请求来自不同的源(即非同源资源)时,这个设置会让 Nginx 只允许那些设置了 `Access-Control-Allow-Origin` 头部信息且值为来源域名的响应返回数据。
如果你想要修改 Nginx 的代理设置以启用或调整 `strict-origin-when-cross-origin`,首先你需要确保你在处理 CORS 请求的代理模块(如 `proxy_pass` 或 `location` 配置)中包含对 `Access-Control-Allow-Origin` 的设置。例如:
```nginx
location /api {
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type';
# 如果你想让所有源都通过代理
proxy_pass http://backend.com;
# 如果你想使用 strict-origin-when-cross-origin 设置
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Max-Age' 1728000; # 设置缓存时间
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
```
在这个例子中,`/api` 路径下的请求会通过代理转发到 `http://backend.com`。对于跨域请求,只有当源等于 `$http_origin` 时才会传递数据,并且只允许特定的 HTTP 方法(GET、POST 和 OPTIONS)。
阅读全文