vue3 项目开发过程中,后端提供的一部分接口会报跨域,这就需要前端做一下反向代理了,但是代理后,前的访问接口会报405这就莫名其妙了。去掉rewrite后就可以正常访问了。
有405的配置
server: {
port: 3012,
open: true,
overlay: {
warnings: false,
errors: true
},
proxy: {
'/dataproperty': {
target: 'http://192.168.235.157',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/dataproperty/, ''),
},
},
},
可以正常访问的配置
server: {
port: 3012,
open: true,
overlay: {
warnings: false,
errors: true
},
proxy: {
'/dataproperty': {
target: 'http://192.168.235.157',
changeOrigin: true,
},
},
},
rewrite的作用
在这个配置中,rewrite
的作用是替换URL的一部分。
更具体地,rewrite
是一个函数,其参数是一个路径(在这种情况下,以/dataproperty
开头的任何路径)。这个函数将使用replace
方法将路径中的/dataproperty
替换为''
(空字符串),从而有效地删除它。
这意味着,如果您有一个请求发送到/dataproperty/some/endpoint
,那么这个rewrite
函数将把它改写为/some/endpoint
。
这个机制在代理服务器设置中很有用,因为它允许您对来自客户端的URL进行微调,以便它们能够正确地映射到目标服务器上的实际端点。在这个例子中,假设你的客户端正在发出请求到http://localhost:3012/dataproperty/some/endpoint
,代理服务器将会将这个请求转发到http://192.168.235.157/some/endpoint
。