Angular 使用intercept服务生成服务时重复基本URL
首先,如果我没有像我应该解释的那样解释这个问题,我很抱歉,但是我有点困惑 我正在处理一个项目,基本Url或环境Url是在Angular 使用intercept服务生成服务时重复基本URL,angular,angular8,Angular,Angular8,首先,如果我没有像我应该解释的那样解释这个问题,我很抱歉,但是我有点困惑 我正在处理一个项目,基本Url或环境Url是在拦截服务中设置的,但问题是当我在某个服务中调用某个http请求时,请求Url域名被复制,这会导致一个错误404 not found我试图检查Url是如何构建的,并且一切似乎都很好。其他服务中的其他请求工作正常,即使它们是从我相信的同一个拦截器生成的 您可以查看下面的屏幕截图以查看结果: 以下是InterceptService intercept( reques
拦截服务中设置的
,但问题是当我在某个服务中调用某个http请求
时,请求Url域名被复制,这会导致一个错误404 not found
我试图检查Url是如何构建的,并且一切似乎都很好。其他服务中的其他请求工作正常,即使它们是从我相信的同一个拦截器生成的
您可以查看下面的屏幕截图以查看结果:
以下是InterceptService
intercept(
request: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
if (request.url.indexOf('/assets/') > -1) {
return next.handle(request);
}
let me = this;
var token = '';
//this.authService.tokenVal.subscribe(val => {
// // need this basic auth for login request
// token = `Bearer ${val}`
//});
request = request.clone({
setHeaders: {
Authorization: token
},
url: `${environment.apiUrl}/${request.url}`
});
return next.handle(request).pipe(
tap(
event => {
if (event instanceof HttpResponse) {
}
},
error => {
console.error(error.status);
console.error(error.message);
}
)
);
}) 克隆请求时正在重复url
request = request.clone({
setHeaders: {
Authorization: token
},
// url: `${environment.apiUrl}/${request.url}` NOT THIS
url: request.url // THIS
});
${environment.apirl}/${request.url}
应为
request.url
您正在克隆请求,以便可以添加标题,但是请求url本身已经由您的代码完全定义,该代码将其设置为http://localhost:5001/api/countries
首先这将端口更改为4200,我想使用后端5100端口。另外,我想知道为什么它可以很好地处理其他服务中的其他请求?这很奇怪,或者我遗漏了什么。但是你的截图显示了urlhttp://localhost:5100/http://localhost:5100/api/countries
。如果这是来自${environment.apirl}/${request.url}
,那么我认为environment.baseUrl
是http://localhost:5100
,您的http请求看起来类似于http.get(`${environment.baseUrl}/api/countries`)
。这意味着request.url是http://localhost:5100/api/countries
这让我很困惑。在另一个服务中,基本url以相同的方式构建,但请求是正确的。我不认为答案就在你的答案里。
request = request.clone({
setHeaders: {
Authorization: token
},
// url: `${environment.apiUrl}/${request.url}` NOT THIS
url: request.url // THIS
});