简述跨域问题:
在这里插入图片描述

①在服务器端部署上线后的跨域问题

方案:使用Nginx方向代理服务器解决
通过反向代理服务器监听同端口,同域名的访问,不同路径映射到不同的地址,比如,在nginx服务器中,监听同一个域名和端口,不同路径转发到客户端和服务器,把不同端口和域名的限制通过反向代理,来解决跨域的问题。
在这里插入图片描述
前端异步请求数据(向/account/login接口发起请求,前面加上apis是由于在nginx中设置了反向代理):
在这里插入图片描述
后端接口:
在这里插入图片描述
前端请求接口:
在这里插入图片描述

需要使用webpack中的dev运行

②开发过程中的跨域问题(以下解决方案中后端提供的接口与上面一致,无需做任何改变):

情况一:本地运行了一个spring boot项目提供数据接口,在开发时想通过该接口获取数据

前端异步请求数据:
在这里插入图片描述
这时我们需要在webpack.config.js中配置devServer:
在这里插入图片描述
此时在本地即可解决跨域问题

最后一种是前后端开发中最可能遇到的情况,此时后端已经在云服务器上运行,而前端还在本地开发

情况二:云服务器运行了一个spring boot项目并通过nginx反向代理(nginx配置与上面一样,没有改变)提供数据接口,前端开发人员希望在本地从云服务器请求数据:

前端异步请求数据:
在这里插入图片描述
这时我们同样需要在webpack.config.js中配置devServer:
在这里插入图片描述

③存静态页面访问接口的跨域问题

此时没有dev运行前端并对请求地址做代理,需要对前端和后端都进行配置

情况一:本地运行了一个spring boot项目提供数据接口,在开发时想通过该接口获取数据

前端异步请求:
(需要接口的完整路径)
在这里插入图片描述
后端在controller的类或方法上添加注解允许跨域:
在这里插入图片描述
此时我们直接打开静态页面login.html也能够访问到接口数据

情况二:云服务器运行了一个spring boot项目并通过nginx反向代理(nginx配置与上面一样,没有改变)提供数据接口,前端开发人员希望在本地从云服务器请求数据:

暂时还未解决,如果有解决方法欢迎到评论区讨论

springboot跨域请求解决方案+前后端分离跨域问题其他解决方案

参考:https://blog.csdn.net/qq_43486273/article/details/83272500

webpack-dev-server使用proxy跨域cookie问题

参考:https://blog.csdn.net/qq_36297981/article/details/89528832

更多推荐