我有很多http请求,我想用Interceptor更改URL 我正在使用以下代码:
/** implemented method from HttpInterceptor */
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const dupReq = req.clone({ headers: req.headers.set('Authorization', 'Basic YWRtaW46YWRtaW4=') });
return next.handle(dupReq);
}
constructor(public http: HttpClient) {
console.log('Hello InterceptorProvider Provider');
}
/**
* set url as local or development mode
*/
processUrl(url) {
console.log('Interceptor.ProcessUrl');
if (url.search('http://') || url.search('https://')) {
return url;
} else {
return this.url_request + url;
}
}
答案 0 :(得分:0)
拦截器拦截应用程序发出的所有HTTP请求。无论业务逻辑如何,拦截器都不应区分,因为它应该拦截请求。业务逻辑决定了被拦截的请求应该做什么。
作为请求的一部分,我们还获得了HTTP方法类型。
因此,仅当HTTP方法为get时,您才可以应用标头。
由于请求是不可变的,因此您必须克隆请求并相应地添加标头。
req.clone({...}); // the header you wish to add.