Maison > développement back-end > Golang > Comment résoudre les erreurs CORS lors de l'ajout d'en-têtes d'autorisation dans Angular ?

Comment résoudre les erreurs CORS lors de l'ajout d'en-têtes d'autorisation dans Angular ?

Susan Sarandon
Libérer: 2024-12-28 22:00:18
original
888 Les gens l'ont consulté

How to Resolve CORS Errors When Adding Authorization Headers in Angular?

Ajout d'un en-tête d'autorisation aux requêtes HTTP angulaires

Problème :

Une application angulaire rencontre une erreur CORS lors de l'ajout d'un en-tête "Authorization" à une requête HTTP. L'erreur est :

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. The response had HTTP status code 403
Copier après la connexion

Bonnes pratiques :

Dans Angular 4 et versions ultérieures, il est recommandé d'utiliser des intercepteurs HTTP pour ajouter des en-têtes d'authentification aux requêtes et des gardes pour protéger routes.

Implémentation angulaire :

Pour utiliser un AuthInterceptor, créez un fichier TypeScript (par exemple, auth.interceptor.ts) :

import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
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);
  }
}
Copier après la connexion

Ensuite, enregistrez l'intercepteur dans 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,
    },
    ...
],

...
Copier après la connexion

Allez Implémentation :

Côté Go, s'assurer que le middleware CORS autorise la requête nécessaire en-têtes :

headersOk := handlers.AllowedHeaders([]string{"*"})
originsOk := handlers.AllowedOrigins([]string{"*"})
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
Copier après la connexion

Si le problème persiste, configurez soigneusement les paramètres CORS pour qu'ils correspondent aux en-têtes envoyés par le client.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal