我正在使用角色5中的API调用的代理API设置,如本网站所述。https://juristr.com/blog/2016/11/configure-proxy-api-angular-cli/ 当我使用npm start时,这工作正常。但是当我构建它并在IIS上托管它时。它不起作用。我相信在dist文件夹中没有添加proxy.config.json。
答案 0 :(得分:2)
代理在dev服务器处于活动状态时正在运行。 ng build
不启动dev服务器,此命令仅构建项目。因此,您无法在已组装的项目中使用代理。您可以使用ng serve --proxy-config proxy.config.json --prod
之类的smth在prod
环境中使用代理
如果您需要在制作中使用其他基本网址,则可以使用HttpInterceptor
。只需创建这样的服务
@Injectable()
export class InterceptorsService implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const proxyReq = req.clone({ url: `${ BASE_PATH }${ request.url }` });
return next.handle(proxyReq);
}
}
并将其添加到模块中的提供商
...
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: InterceptorsService, multi: true }, ...
]
...
答案 1 :(得分:1)
此配置仅适用于您的开发设置,不应在生产中使用。您需要为生产环境包含其他解决方案才能运行。
答案 2 :(得分:1)
我遇到了同样的问题。我的proxy.config.json在我的开发环境中工作,但在PROD环境中无效,即使我用build构建--prod
找到方法之后,我找到了一个用中间件代替后端代码的解决方案(在我的情况下我使用了Nginx)。
如果您还使用了Nginx,则可以通过将其配置为nginx配置来执行代理后端。
nginx.conf
location /api/ {
proxy_pass http://127.0.0.1:8087;
#all incoming http request with /api/ will be forwarded to http://127.0.0.1:8087/api/
}