Токен авторизации не может быть перенаправлен на сервер правильно - PullRequest
1 голос
/ 09 января 2020

Я реализовал AuthTokenInterceptor, как показано ниже. Моя проблема в том, что токен авторизации не может быть перенаправлен на серверную сторону правильно. Я уверен, что смогу получить токен аутентификации request.headers.get («Авторизация») непосредственно перед передачей запроса в next.handler ().

Я обнаружил, что запрос был отправлен дважды, у первого не было заголовка авторизации, но у второго был заголовок.

Я удалил повторную попытку из канала, но по-прежнему отправляются два запроса на сторону сервера.

Существует особый случай для моего проекта. Я использовал сторонний инструмент i18n, и он требует старого HttpModule из «@ angular / http». Поэтому я импортирую как HttpModule, так и HttpClientModule.

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    if (this.authService.getAccessToken()) {
      request = this.addToken(request);
    }

    return next.handle(request).pipe(catchError(error => {
      if (error instanceof HttpErrorResponse 
        && ( error.status === 401 || error.status == 403) ) {
        if ( error.status == 401 )
          return this.handle401Error(error, request, next);
        else
          return this.handle403Error(error, request, next);
      } else {
        return throwError(error);
      }
    }));
  }

  private addToken(request: HttpRequest<any>): HttpRequest<any> {
    const tokenName = this.authService.getAuthorizationTokenName();
    const tokenValue = this.authService.getAuthorizationTokenValue();

    // Clone the request and replace the original headers with
    // cloned headers, updated with the authorization.
    const authReq = request.clone({
      headers: request.headers.set(tokenName, tokenValue)
    });
    return authReq;
  }

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Я наконец нашел причину двойных запросов. Первый запрос - это запрос опции CORS. Вот почему он не содержит заголовок авторизации.

0 голосов
/ 10 января 2020

Перехватчик получает только один запрос, но на сервер отправлено два запроса.

...