项目:Ruoyi-Vue-Plus
问题:我后端的地址明明是 localhost:8080 ,为什么在前端F12看到的是 localhost/dev-api/captchaImage 呢?
好神奇,是不是前端把后端的地址藏起来了…
结论:并不是前端把后端藏起来了,而是中转的一个服务器把你的后端接口地址,中转成为了和你前端项目地址一样的一个地址。因为项目在开发环境中有一个供开发用的本地服务器,这个是由webpack-dev-server干的。他只是把你的前端项目以线上的形式部署在本地,并给你生成一个本地的访问地址。
因为这是为了解决前后端交互过程中,前端出现的一种跨域的解决方案,这是一种同源政策。
因为两个地址不一样,会导致浏览器触发同源政策引起跨域问题。
所以,需要使用这种反向代理
的机制来保持这个同源政策。
而反向代理也是最常用的一种跨域的解决方案。
附上webpack·dev·server的反向代理的文档:https://webpack.docschina.org/configuration/dev-server/#devserverproxy
上述是基于个人理解,如果对楼主有帮助,请点一下采纳。
可能前端代码中使用了一些请求转发或者重定向的技术。
如,在前端使用了代理服务器(如webpack-dev-server)来请求后端API,这个代理服务器可能将请求转发到了后端服务器。在这种情况下,前端代码中可能会有如下配置:
proxy: {
'/dev-api': {
target: 'http://localhost:8080',
changeOrigin: true
}
}
这样的话,当前端发送请求到/dev-api/captchaImag时,实际上是发送到了http://localhost:8080/captchaImag%E3%80%82
另外也可能是在后端服务器中使用了URL重写或者URL重定向的技术,将请求转发到了另外一个地址。
如果确定是这个问题,可以检查前端代码中是否使用了代理服务器,并检查后端服务器中是否使用了URL重写或者URL重定向的技术。
情检查下前端项目代码中配置的请求后端地址