Относительно лучшего способа обработки заголовков аутентификации в Angular> 4, лучше использовать перехватчики Http для добавления их к каждому запросу, а затем использовать Guards для защиты ваших маршрутов.
Вот полный пример AuthInterceptor, который я использую в своем приложении:
auth.interceptor.ts
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { AuthService } from './auth.service';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
req = req.clone({
setHeaders: {
'Content-Type' : 'application/json; charset=utf-8',
'Accept' : 'application/json',
'Authorization': `Bearer ${AuthService.getToken()}`,
},
});
return next.handle(req);
}
}
Вам необходимо зарегистрировать свой перехватчик в app.module в качестве провайдера:
app.module.ts
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
import { AuthInterceptor } from '../auth/auth.interceptor';
...
imports: [
HttpClientModule,
...
],
providers: [
{
provide : HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
multi : true,
},
...
],
...
Визит https://medium.com/@ryanchenkie_40935 / angular -authentication-using-the-http-client-and-http-interceptors-2f9d1540eb8
Что касается стороны Go, это, скорее всего, случай несоответствия между заголовками запросов, которые вы Отправляешь и заголовки CORS позволяют. Первое, что вы должны попробовать, это разрешить все из них:
headersOk := handlers.AllowedHeaders([]string{"*"})
originsOk := handlers.AllowedOrigins([]string{"*"})
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
И если проблема исчезнет, попробуйте тщательно структурировать CORS один за другим в соответствии с тем, что отправляет ваш клиент.