Maison >interface Web >js tutoriel >Comment corriger les erreurs « Champs d'en-tête de demande non autorisés » dans les transferts de fichiers d'origine croisée ?

Comment corriger les erreurs « Champs d'en-tête de demande non autorisés » dans les transferts de fichiers d'origine croisée ?

DDD
DDDoriginal
2024-11-01 13:36:02172parcourir

How to Fix

Résolution des erreurs « Champs d'en-tête de demande non autorisés » dans les transferts de fichiers d'origine croisée

Lors d'une tentative d'envoi de fichiers via une requête POST, les développeurs peuvent rencontrer l'erreur : " Le champ d'en-tête de requête Content-Type n'est pas autorisé par Access-Control-Allow-Headers." Cette erreur indique que le serveur n'autorise pas le champ d'en-tête spécifié.

La tentative initiale de résoudre cette erreur en ajoutant divers en-têtes, notamment "Access-Control-Allow-Origin" et "Access-Control-Allow- Methods", a entraîné une nouvelle erreur : "Le champ d'en-tête de demande Access-Control-Allow-Origin n'est pas autorisé par Access-Control-Allow-Headers."

En enquêtant plus en profondeur, il a été découvert que la documentation jQuery avertit contre la définition du type de contenu sur autre chose que « application/x-www-form-urlencoded », « multipart/form-data » ou « text/plain » pour les requêtes inter-domaines. Le type de contenu par défaut d'Angular est "application/json", ce qui déclenche une requête OPTIONS de contrôle en amont au serveur.

Pour résoudre ce problème, vous pouvez soit écraser l'en-tête par défaut d'Angular, soit autoriser Access-Control-Allow-Headers sur le fin du serveur. Voici un exemple de remplacement de l'en-tête par défaut d'Angular :

$http.post(url, data, {
    headers : {
        'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
    }
});

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:
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