webpack-dev-server 代理:带通配符的上下文
webpack-dev-server proxy: context with wildcard
我想将 /v1/* 代理到 http://myserver.com,这是我的脚本
devServer: {
historyApiFallBack: true,
// progress: true,
hot: true,
inline: true,
// https: true,
port: 8081,
contentBase: path.resolve(__dirname, 'public'),
proxy: {
'/v1/*': {
target: 'http://api.in.uprintf.com',
secure: false
// changeOrigin: true
},
},
},
但是没用,
更新:
感谢@chimurai,设置changeOrigin: true
对于使其工作很重要。
Underneath webpack-dev-server
passes all the proxy configuration to http-proxy-middleware
, from the documentation。很明显你想要的用例实际上是用 /v1/**
路径实现的:
devServer: {
historyApiFallBack: true,
// progress: true,
hot: true,
inline: true,
// https: true,
port: 8081,
contentBase: path.resolve(__dirname, 'public'),
proxy: {
'/v1/**': {
target: 'http://api.in.uprintf.com',
secure: false,
changeOrigin: true
}
}
},
确保您的请求 url 和端口与您的 webpack-dev-server 运行 所在的相匹配。因此,如果您的 api 位于 http://localhost:5000
,并且您的开发服务器位于 http://localhost:8080
上的 运行,请确保您的所有请求都指向 http://localhost:8080
。最好向 localhost:8080/api
发出请求(以避免与应用程序路由冲突)并使用路径重写来删除 /api。
示例:
Webpack devserver 代理配置:
proxy: {
'/api': {
target: 'http://localhost:5000',
pathRewrite: { '^/api': '' },
},
}
Webpack 开发服务器 运行 在:
http://localhost:8080
所需的API端点:
http://localhost:5000/items
在您的应用中,将请求发送至:
http://localhost:8080/api/items
.
这个应该有效。在我看来,上述所有问题都源于向 API url 和端口发出请求,而不是向 webpack 开发服务器 url 和端口发出请求,并使用代理和路径重写为将请求定向到 API.
这对我来说很好。
devServer: {
host: '11.11.111.111', //local ip
port: 8080,
contentBase: outputpath,
historyApiFallback: true,
inline: true,
proxy: {
'/api':{
target:'http://example.com',
pathRewrite: {'^/api' : ''},
secure:false,
changeOrigin:true
}
}
},
//使用
$.ajax({
url:'/api/pvp/share/getsharecfg.php',
dataType:'json',
...
我想将 /v1/* 代理到 http://myserver.com,这是我的脚本
devServer: {
historyApiFallBack: true,
// progress: true,
hot: true,
inline: true,
// https: true,
port: 8081,
contentBase: path.resolve(__dirname, 'public'),
proxy: {
'/v1/*': {
target: 'http://api.in.uprintf.com',
secure: false
// changeOrigin: true
},
},
},
但是没用,
更新:
感谢@chimurai,设置changeOrigin: true
对于使其工作很重要。
Underneath webpack-dev-server
passes all the proxy configuration to http-proxy-middleware
, from the documentation。很明显你想要的用例实际上是用 /v1/**
路径实现的:
devServer: {
historyApiFallBack: true,
// progress: true,
hot: true,
inline: true,
// https: true,
port: 8081,
contentBase: path.resolve(__dirname, 'public'),
proxy: {
'/v1/**': {
target: 'http://api.in.uprintf.com',
secure: false,
changeOrigin: true
}
}
},
确保您的请求 url 和端口与您的 webpack-dev-server 运行 所在的相匹配。因此,如果您的 api 位于 http://localhost:5000
,并且您的开发服务器位于 http://localhost:8080
上的 运行,请确保您的所有请求都指向 http://localhost:8080
。最好向 localhost:8080/api
发出请求(以避免与应用程序路由冲突)并使用路径重写来删除 /api。
示例:
Webpack devserver 代理配置:
proxy: {
'/api': {
target: 'http://localhost:5000',
pathRewrite: { '^/api': '' },
},
}
Webpack 开发服务器 运行 在:
http://localhost:8080
所需的API端点:
http://localhost:5000/items
在您的应用中,将请求发送至:
http://localhost:8080/api/items
.
这个应该有效。在我看来,上述所有问题都源于向 API url 和端口发出请求,而不是向 webpack 开发服务器 url 和端口发出请求,并使用代理和路径重写为将请求定向到 API.
这对我来说很好。
devServer: {
host: '11.11.111.111', //local ip
port: 8080,
contentBase: outputpath,
historyApiFallback: true,
inline: true,
proxy: {
'/api':{
target:'http://example.com',
pathRewrite: {'^/api' : ''},
secure:false,
changeOrigin:true
}
}
},
//使用
$.ajax({
url:'/api/pvp/share/getsharecfg.php',
dataType:'json',
...