CORS (Cross-Origin Resource Sharing) bereitet oft Kopfschmerzen, wenn Angular-Apps mit Go-APIs verbunden werden. Für eine erfolgreiche Kommunikation zwischen beiden ist es von entscheidender Bedeutung, zu verstehen, wie man Autorisierungsheader in Angular hinzufügt und CORS in Go handhabt.
Um Autorisierungsheader in Angular hinzuzufügen, sollten Sie HTTP-Interceptors verwenden. Ein Beispiel für einen Auth Interceptor ist:
@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); } }
Registrieren Sie den Interceptor im Modul Ihrer App:
providers: [ { provide : HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi : true, }, ],
Stellen Sie sicher, dass Ihr Go-Code dies zulässt Erforderliche Anforderungsheader aus der Angular-App:
headersOk := handlers.AllowedHeaders([]string{"*"}) originsOk := handlers.AllowedOrigins([]string{"*"}) methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
Wenn die Probleme weiterhin bestehen, konfigurieren Sie Ihre CORS-Einstellungen sorgfältig entsprechend die Anforderungsheader des Clients.
Der folgende Angular-Code:
this.http.get<ProjectedBalance>(requestUrl, {headers: new HttpHeaders().set('Authorization', 'my-auth-token')})
Kombiniert mit dem folgenden Go-Code:
headersOk := handlers.AllowedHeaders([]string{"Authorization"}) originsOk := handlers.AllowedOrigins([]string{"*"}) methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
Sollte die Kommunikation zwischen der Angular-App und der Go-API erfolgreich hergestellt werden.
Das obige ist der detaillierte Inhalt vonWie behebt man Probleme mit Angular-HTTP-Headern und Go CORS?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!