在URL中添加后缀在request.clone中不起作用?

时间:2018-02-08 18:58:20

标签: string angular ecmascript-6

在Angular 4中,我想在所有HTTP请求中添加基本URL作为后缀,并使用拦截器修改标头,但这在某种程度上无法按预期工作。

下面的

是相关代码,这是Angular reference

const BASE_URL = 'http://127.0.0.1:8080';

@Injectable()
export class NoopInterceptor implements HttpInterceptor {

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        request = request.clone({
            setHeaders: {
                Authorization: `${AUTH_PREFIX} ${this.authService.getToken()}`,
                another: 'header'
            },
            url: request.url.concat(BASE_URL)
        });
        console.log('new request: ', request);
        return next.handle(request);
    }

试验1

在request.cone()

之后直接尝试concat网址
 request.url.concat(BASE_URL);

试验2

再次克隆请求并尝试添加到网址

const secureRequest = request.clone({
              url: request.url.concat(BASE_URL)
            });

以上都没有工作? Angular会阻止它吗?这是一种错误的方法吗?

1 个答案:

答案 0 :(得分:1)

你没有正确使用concat。

应该是

url: BASE_URL.concat(request.url)

而不是反过来