之前項(xiàng)目代碼里有一段這樣的代碼
# A文件
const resp = await fetch('/resourceUrl/resImage/replace', {
method: 'POST',
body: formData,
});
# server.js
app.use(
'/resourceUrl',
proxy(resourceUrl, {
limit: '100mb',
timeout: 3 * 60 * 1000, // 3min
proxyReqOptDecorator(proxyReqOpts, srcReq) {
const opts = proxyReqOpts;
// you can update headers
opts.headers.Authorization =
(srcReq.session.user && srcReq.session.user.accessToken) || '';
// you can change the method
// opts.method = 'GET';
return opts;
},
}),
);
之前我的resourceUrl是 https://www.xxx.com 這種地址,所以一直用著都沒什么問題,但是今天我換成了https://www.xxx.com/aaa/bbb 這樣帶路徑的,就會(huì)出現(xiàn)問題
fetch請(qǐng)求的地址轉(zhuǎn)發(fā)成了下面的請(qǐng)求,丟失了/aaa/bbb這段路徑
https://www.xxx.com/resImage/replace
所以我們需要對(duì)proxy加個(gè)參數(shù)
app.use(
'/resourceUrl',
timeout('180s'),
proxy(resourceUrl, {
limit: '100mb',
timeout: 3 * 60 * 1000, // 3min
proxyReqPathResolver: req => resourceUrl + req.url,
proxyReqOptDecorator(proxyReqOpts, srcReq) {
const opts = proxyReqOpts;
// you can update headers
opts.headers.Authorization =
(srcReq.session.user && srcReq.session.user.accessToken) || '';
// you can change the method
// opts.method = 'GET';
return opts;
},
}),
);
加一個(gè)proxyReqPathResolver拼一下路徑就好了, 帶query的地址同理