当初被这个跨域问题搞得头都大了(那个时候还太菜了)
一般前端的请求是 网址都是 域名(端口 访问的是80 或者 443)
而后端的服务是 8080 端口,这个时候你请求 http://106.520.156.210:8080/vic-indoor-pc/selectAllUser
就会报跨域问题了(端口不同)
所以我在每个请求加了统一的前缀 /api
,请求变成了 http://106.520.156.210/api/vic-indoor-pc/selectAllUse (端口必须和前端一样)
前端发送请求: http://106.520.156.210/api/vic-indoor-pc/selectAllUse
Nginx转发变成了: http://106.520.156.210:8080/vic-indoor-pc/selectAllUse
经过Nginx 这样转发,对于浏览器来说,访问的就是 80 ,但是请求的其实是 8080
rewrite "^/api/(.*)$" /$1 break;
这句就是把 /api
给删除掉了然后 转发到了 http://106.520.156.210:8080/
location /api/vic-indoor-pc {
proxy_set_header Client-IP $Remote_addr;
proxy_pass http://106.520.156.210:8080/;
rewrite "^/api/(.*)$" /$1 break;
}
我还碰到了 下载 阿里OSS 存储跨域的问题,也是这么解决的。(加上统一前缀)
location /img/report {
proxy_set_header Client-IP $Remote_addr;
proxy_pass https://bilibili.oss-cn-shenzhen.aliyuncs.com/;
rewrite "^/img/(.*)$" /$1 break;
}