前后端分离跨域问题

Flavia ·
更新时间:2024-11-11
· 731 次阅读

跨域问题来源于浏览器的同源策略。客户端和服务端不同IP不同端口都算跨域。

springboot解决跨域有cros,配置就是那几项。

如果把服务端程序部署在nginx上,在nginx 也可以解决,服务端和nginx只用写一个即可,

server { listen 3002; server_name localhost; location /ok { proxy_pass http://localhost:3000; # 指定允许跨域的方法,*代表所有 add_header Access-Control-Allow-Methods *; # 预检命令的缓存,如果不缓存每次会发送两次请求 add_header Access-Control-Max-Age 3600; # 带cookie请求需要加上这个字段,并设置为true add_header Access-Control-Allow-Credentials true; # 表示允许这个域跨域调用(客户端发送请求的域名和端口) # $http_origin动态获取请求客户端请求的域 不用*的原因是带cookie的请求不支持*号 add_header Access-Control-Allow-Origin $http_origin; # 表示请求头的字段 动态获取 add_header Access-Control-Allow-Header } }

值得一提的是,客户端如果要在跨域请求中携带cookie时,客户端发起请求要配置withCredentials=true,但如果配置了此参数,服务端 Access-Control-Allow-Origin 就不能是 *,所以上边nginx Access-Control-Allow-Origin没有写*。

Access-Control-Allow-Origin 是客户端请求来源,可以指定路径配置。

假设前端程序部署在172.20.0.206nginx上,监听80端口路由到前端。

服务端配置的Access-Control-Allow-Origin:http://172.20.0.206,  就可以访问正常访问了。


作者:科氏加速度



跨域 前后端分离

需要 登录 后方可回复, 如果你还没有账号请 注册新账号