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 ?
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!