跨域 & 同源策略
1.同源策略是指浏览器为防止XSS((cross site scripting)和CSRF(cross site request forgery)等攻击提出的安全策略,除非协议,域名(使用ip和域名视为不同),端口三者均一致,否则视为非同源。
2.非同源之间相互访问,视为跨域访问。同源策略禁止跨域进行浏览器存储,浏览器DOM对象操作和脚本操作,以及AJAX请求。
3.浏览器允许跨域请求js,css,img,mp3等常规静态资源。
避开同源策略,实现跨域请求
1.因为同源策略是浏览器规范,服务器不遵守,在对目标服务器不做改动的情况,使用代理服务器,比如nginx,在nginx里允许跨域请求,然后代理请求目标服务器。
location / {
# 允许跨域设置
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
if ($request_method = 'OPTIONS') {
return 204;
}
}