什么是跨域
协议
+ 域名
+ 端口
有一处不相同时,就认为是跨域
为什么会有跨域
同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到攻击。
解决方案
使用Nginx做反向代理
-
情景1
假设网站部署在80接口,在80接口下设置反向代理,可直接解决跨域问题
location ^~/v1{
rewrite ^/v1/(.*)$ /$1 break;
proxy_pass http://localhost:8080;
}
-
情景2
假设网站部署在8081端口,api端口为8080,反向代理服务端口为80
location ^~/v1{
rewrite ^/v1/(.*)$ /$1 break;
proxy_pass http://localhost:8080;
add_header Access-Control-Allow-Methods *;
add_header Access-Control-Max-Age 3600;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Headers
$http_access_control_request_headers;
if ($request_method = OPTIONS){
return 200;
}
}