一、尝试通过配置请求头和响应头解决(跨域解决了但session每次请求都不一致)
1、axios配置
2、后端过滤器配置
3、问题复现
4、尝试解决(失败)
5、小结
二、Vite配置Proxy代理解决跨域问题(本地环境)
1、axios配置
2、fig
3、后端
4、测试
springmvc选择题
三、Nginx反向代理解决跨域问题(测试、生产环境)
1、只需在nginx配置如下
2、测试
四、总结
正文
一、尝试通过配置请求头和响应头解决(跨域解决了,但session每次请求都不一致)
1、axios配置
2、后端过滤器配置
3、问题复现
在后端打印sessionId发现:
(1)前端地址为localhost:8080,后端地址为localhost:8282,此时跨域问题解决,session一致。
(2)部署到服务器上后,前端地址为x:8080,后端地址为x:8282,此时跨域问题解决,session一致。
(3)部署到服务器上后,前端地址为本机localhost:8080,后端地址为x:8282,此时跨域问题解决,session出现不一致。
4、尝试解决(失败)
axios配置:
查了一些资料说需需要增加
可以再使用
部署到服务器调试:跨域请求直接过不去
5、小结
实际上域名、端口、协议只要任一不同,都是跨域,但是实际测试发现相同域名下访问sessionId可以保持不变,况且cookie已经携带。上面的解决办法行不通,但暂时没有搞懂为什么。
二、Vite配置Proxy代理解决跨域问题(本地环境)
1、axios配置
此处baseURL与下方配置对应,不再使用前面直接指定后端地址的方式。
3、后端
把前面配置的cors过滤器删掉。
4、测试
跨域:没有问题
session:id保持一致
三、Nginx反向代理解决跨域问题(测试、生产环境)
2、测试
跨域:没有问题
session:id保持一致
四、总结
跨域常用解决方案包括:
jsonp:利用script标签可跨域的特点,在跨域脚本中可以直接回调当前脚本的函数cors:服务器设置http响应头中的Access-Control-Allow-Origin值,解除跨域限制node:中间代理
nginx:反向代理
其中vite配置的属于中间代理,适用于本地开发环境;
nginx配置反向代理,适用于生产环境。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。