DevServer 代理绕过 POST 始终请求 Returns 404 未找到
DevServer Proxy Bypass POST Request Always Returns 404 Not Found
WebPack 版本"version": "3.12.0"
开发服务器版本 "version": "2.11.3"
下面的代码片段是我配置 DevServer 代理的方式。它适用于 GET
请求,其中 returns 需要样本数据,但它不适用于通过 POST
的 feedback
端点。对 /feedback
的 POST
请求总是 returns 404
。但是,当我将 method === 'POST'
更改为 GET
时,它将再次开始工作。
我通过在分支内抛出 Error('method: ${method}; url: ${url}')
向 /feedback
发送 POST
请求时确认分支是可达的。
const proxyDummy = {
'/': {
bypass: (req) => {
const { url, method } = req;
if (method === 'GET') {
switch (url) {
case '/data':
return SAMPLE_DATA.DATA; // JSON file path (Working)
default:
break;
}
}
if (method === 'POST') {
switch (url) {
case '/feedback':
return SAMPLE_DATA.FEEDBACK; // JSON file path
default:
break;
}
}
return false;
}
}
};
再次尝试使用文档中的常规代理路由配置状态,
const proxyDummy = {
'/data': {
target: generateURLFrom(SAMPLE_DATA.DATA),
pathRewrite: { '^/data': '' }
},
'/feedback': {
target: generateURLFrom(SAMPLE_DATA.FEEDBACK),
pathRewrite: { '^/feedback': '' },
bypass: (req, res, proxyOption) => {
if (req.method !== 'POST') return false;
}
}
};
还没有深入研究 DevServer 源代码,但我假设使用上面的配置代码设置代理服务器不仅仅适用于 GET
请求,下面的代理服务器是 express
所以配置像下面这样的代理服务器可以正常工作
const proxyDummy = {
'/': {
bypass: (req, res) => {
const { url, method } = req;
if (method === 'GET') {
switch (url) {
case '/data':
return res.send('');
default:
break;
}
}
if (method === 'POST') {
switch (url) {
case '/feedback':
return res.send();
default:
break;
}
}
return false;
}
}
};
WebPack 版本"version": "3.12.0"
开发服务器版本 "version": "2.11.3"
下面的代码片段是我配置 DevServer 代理的方式。它适用于 GET
请求,其中 returns 需要样本数据,但它不适用于通过 POST
的 feedback
端点。对 /feedback
的 POST
请求总是 returns 404
。但是,当我将 method === 'POST'
更改为 GET
时,它将再次开始工作。
我通过在分支内抛出 Error('method: ${method}; url: ${url}')
向 /feedback
发送 POST
请求时确认分支是可达的。
const proxyDummy = {
'/': {
bypass: (req) => {
const { url, method } = req;
if (method === 'GET') {
switch (url) {
case '/data':
return SAMPLE_DATA.DATA; // JSON file path (Working)
default:
break;
}
}
if (method === 'POST') {
switch (url) {
case '/feedback':
return SAMPLE_DATA.FEEDBACK; // JSON file path
default:
break;
}
}
return false;
}
}
};
再次尝试使用文档中的常规代理路由配置状态,
const proxyDummy = {
'/data': {
target: generateURLFrom(SAMPLE_DATA.DATA),
pathRewrite: { '^/data': '' }
},
'/feedback': {
target: generateURLFrom(SAMPLE_DATA.FEEDBACK),
pathRewrite: { '^/feedback': '' },
bypass: (req, res, proxyOption) => {
if (req.method !== 'POST') return false;
}
}
};
还没有深入研究 DevServer 源代码,但我假设使用上面的配置代码设置代理服务器不仅仅适用于 GET
请求,下面的代理服务器是 express
所以配置像下面这样的代理服务器可以正常工作
const proxyDummy = {
'/': {
bypass: (req, res) => {
const { url, method } = req;
if (method === 'GET') {
switch (url) {
case '/data':
return res.send('');
default:
break;
}
}
if (method === 'POST') {
switch (url) {
case '/feedback':
return res.send();
default:
break;
}
}
return false;
}
}
};