Как устранить неполадки angular значения заголовка перехватчика http? - PullRequest
0 голосов
/ 01 апреля 2020

Немного предыстории, у меня есть Golang бэкэнд-микросервис, который обрабатывает операции CRUD для сообщений. Я протестировал его с Postman, браузером, и он делает то, что ему нужно. Проблема возникает, когда я ie подключаюсь к интерфейсу Angular для развертывания. Достаточно сказать, что бэкэнд правильно выставляет заголовок CORS в ответе, а также запрашивает у клиента ключ авторизации, чтобы что-то сделать с микросервисом. Этот ключ необходимо передать через заголовок. Теперь, поскольку каждый мой запрос будет нуждаться в каком-то ключе, я решил использовать HTTP-перехватчик Angular для этой работы. Вот что я получил:

В моем post.service на моем Angular внешнем интерфейсе

  allPosts(): Observable<HttpResponse<Post[]>> {

    const url = environment.POST_SERVICE_URL + '/user/post';
    console.log('Hitting URL: ' + url + ' with key: ' + environment.POST_SERVICE_KEY);
    return this.http.get<Post[]>(url, {observe: 'response'}).pipe(catchError(this.handleError));
  }

А затем в перехватчике:

@Injectable()
export class AppHttpInterceptor implements HttpInterceptor {
  constructor() {
  }

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    console.log(req);
    const r = req.clone();

    r.headers.set('Authorisation-Key', environment.POST_SERVICE_KEY);
    return next.handle(r);
  }
}

И мой модуль приложения :

@NgModule({
  declarations: [
    AppComponent,
    PostsComponent,
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule
  ],
  providers: [{
    provide: HTTP_INTERCEPTORS,
    useClass: AppHttpInterceptor,
    multi: true
  }],
  bootstrap: [AppComponent]
})
export class AppModule { }

Итак, я ожидаю, что перехватчик клонирует запрос, затем добавит ключ к этому клонированному запросу и отправит его. По крайней мере, это мое понимание того, как работает этот перехватчик. Ну, это на самом деле не работает. Мой бэкэнд не получает ключ и просто выдает ошибку. Проблема не в бэкэнде, потому что, если я вручную включу заголовок авторизации (через надстройку Firefox), он выведет ключ правильно и сможет продолжить работу в обычном режиме. Только когда я использую перехватчик, все становится грушевидным.

Теперь, возможно, вы увидите, что я здесь что-то не так делаю; почему angular не устанавливает заголовок и как мне определить, какие заголовки angular на самом деле отправляют? Мне кажется, что Angular переопределяет любые заголовки, которые я вставляю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...