如何解决createProxyMiddleware 不适用于 Azure Web 应用
我正在运行一个与 API 通信的 Angular Universal 应用程序。现在我试图在通用服务器中设置一个代理,将 API 请求代理到实际的 API 服务器:
server.use(['/api','/sitemap.txt'],createProxyMiddleware({
target: process.env.API_URL,onProxyReq: req => {
console.log('Using origin: ' + getOrigin(req.getHeaders()));
req.setHeader('origin',getOrigin(req.getHeaders()));
},pathRewrite: {'^/api': ''}
}));
这在本地运行时可以完美运行,但是在服务器(Azure WebApp)上运行时,它不起作用。我可以看到在 WebApp 日志中调用了控制台日志,但生成的文档是带有“找不到页面”消息的 Angular 应用程序。
我完全不知道去哪里寻找解决方案。
编辑:
我尝试了另一个代理中间件,它确实成功了。此代码在本地和 Azure 上均有效。
import * as proxy from 'express-http-proxy';
// ...
server.use(['/api',proxy(process.env.API_URL,{
proxyPathResolver: req => {
let url: string = req.url;
if (url.startsWith('/api')) {
url = url.substr(4);
}
return url;
},proxyReqOptDecorator(proxyReqOpts,srcReq) {
proxyReqOpts.headers['origin'] = getOrigin(proxyReqOpts.headers);
return proxyReqOpts;
}
}));
但它有一些其他限制,使其无法用于我们的项目,所以我仍然需要解决这个问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。