我使用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配置中没有与上面的代理路由匹配的路由。由于两条路线在技术上都与快速路线相匹配,我猜快递是随机选择执行哪条路线?
编辑:这是一个有问题的示例路线:
/user-img/bc070850-11c9-a79e-2881-9bd6cc04c3ca.jpg