"Tengine中方式一
针对跨域,options请求nginx就统一拦掉, 直接同意指定域名跨域, 这种配置跨域方式建议吗?有什么风险?
server {
listen 80;
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Methods' $http_access_control_request_method;
add_header 'Access-Control-Allow-Headers' $http_access_control_request_headers;
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
}
方式二
针对跨域,nginx全局配置,Origin指定域名跨域,这种请求最终后端会感知到,这种方式建议吗?
server {
listen 80;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Headers $http_access_control_request_headers;
add_header Access-Control-Allow-Methods $http_access_control_request_method;
add_header Access-Control-Allow-Origin $http_origin;
}
还有一个问题, 就是比如访问非法路径 /aaa/bbb/ccc 路径时,Nginx直接允许的话,后端就会处理这个路由, 遇到攻击时会不会有额外开销?"
在Nginx中,对于跨域请求,特别是预检请求(options请求),有一种常见的配置方式,那就是直接同意来自指定域名的跨域请求。然而,这种做法可能存在一些潜在风险。
首先,如果服务器端错误地允许了未经授权的域名进行跨域访问,那么这可能导致敏感数据泄露或被恶意利用。因此,建议仅允许可信赖的域名进行跨域资源共享。
"1 : options, 是需要专门处理的。
add_header Access-Control-Allow-Origin $http_origin always; 上面的header只有2xx时能正常带出。如果4xx 5xx不能正常带出。会。此群整理至钉群“Tengine和Tengine-Ingress开源交流群”。"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。