我有一个使用 http-proxy-middleware 设置的快速应用程序,但我在通过代理仅路由请求的子集时遇到问题。
这是我的配置的样子:
app.use(/\/.*-img/i, proxy({changeOrigin: true, logLevel: 'debug', target: 'http://ucassets.blob.core.windows.net'}));
app.get('*', (req, res) => {
const location = req.url;
const memoryHistory = createMemoryHistory(req.originalUrl);
const store = configureStore(memoryHistory);
const history = syncHistoryWithStore(memoryHistory, store);
match({history, routes, location},
(error, redirectLocation, renderProps) => {
if (error) {
res.status(500).send(error.message);
} else if (redirectLocation) {
res.redirect(302, redirectLocation.pathname + redirectLocation.search);
} else if (renderProps) {
/* render HTML and send code 200 */
} else {
res.status(404).send('Not Found?');
}
});
});
代理路由有时会起作用,有时会打印“未找到?” 404 结果。值得注意的是,我的 react-router 配置中没有与上面的代理路由匹配的路由。由于两条路线在技术上都与 express 路线相匹配,我猜 express 是随机选择执行哪一个?
编辑:这是一个有问题的示例路线:
/user-img/bc070850-11c9-a79e-2881-9bd6cc04c3ca.jpg