今天在自己的服务器上部署了一下前几天写的springboot+vue的前后端分离项目。按照常规操作,将springboot项目打包成jar包,将vue项目打包成dist文件夹放在服务器中,通过nginx反向代理,访问vue首页。以下是我自己的nginx配置。
server
{
listen 80;
server_name localhost;
location /
{
root html/dist;
index index.html index.htm;
}
}
通过nginx的反向代理,访问80端口,页面正常渲染,但是数据却没有,这是为什么呢,于是我单独访问后端接口,发现能够接受到json数据,打开前端页面进入f12,发现报错
很明显,这是后端拒绝了请求,也就是跨域问题,但是我本地访问是没问题的,这是为什么呢,通过复查代码,我发现,原来之前在本地解决跨域问题的时候,不是通过前端设置代理,而是直接通过后端设置的拦截器,这也就导致,前端axios提交的请求路径是没有改变的,而到了服务器上运行,后端拦截器接收到的就不再是原来的localhost的请求,而是服务器ip地址的请求,也就毫无疑问被拦截下来了。
解决方案
1.分别修改前端axios的请求路径和后端拦截路径
2.使用前端代理解决跨域问题,而不是通过后端拦截器解决