Maison  >  Article  >  développement back-end  >  Pourquoi ma requête POST AngularJS échoue-t-elle avec un 404 pour la requête de contrôle en amont ?

Pourquoi ma requête POST AngularJS échoue-t-elle avec un 404 pour la requête de contrôle en amont ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 14:56:30259parcourir

Why Does My AngularJS POST Request Fail with a 404 for the Preflight Request?

Échec de la requête POST AngularJS : HTTP 404 pour la demande de contrôle en amont

Dans AngularJS, une erreur non résolue « XMLHttpRequest ne peut pas se charger » peut se produire lors des requêtes POST . Cela est dû à un code d'état HTTP non valide (404) pour la demande de contrôle en amont qui précède le POST réel. La demande de contrôle en amont est destinée à vérifier si l'opération demandée est autorisée, garantissant ainsi le respect des politiques de partage de ressources d'origine croisée (CORS).

Cause fondamentale : en-têtes CORS manquants

La cause sous-jacente de l'erreur réside dans l'incapacité du serveur à gérer correctement la requête OPTIONS de contrôle en amont. Pour activer les requêtes d'origine croisée, le serveur doit définir les en-têtes CORS appropriés.

Solution : ajout d'en-têtes CORS côté serveur

Dans SlimPHP, vous pouvez ajouter des en-têtes CORS à l'objet de réponse :

<code class="php">$app->response()->headers->set('Access-Control-Allow-Headers', 'Content-Type');
$app->response()->headers->set('Content-Type', 'application/json');
$app->response()->headers->set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
$app->response()->headers->set('Access-Control-Allow-Origin', '*');</code>

Solution : Désactivation des demandes de contrôle en amont côté client

Vous pouvez également désactiver les demandes de contrôle en amont côté client en réinitialisant les en-têtes communs dans AngularJS :

<code class="js">app.config(function ($httpProvider) {
  $httpProvider.defaults.headers.common = {};
  $httpProvider.defaults.headers.post = {};
  $httpProvider.defaults.headers.put = {};
  $httpProvider.defaults.headers.patch = {};
});</code>

Considérations supplémentaires

Pour les requêtes POST impliquant des données sensibles, vous devrez peut-être mettre en œuvre des mécanismes d'authentification et d'autorisation, tels que les jetons Web JSON (JWT), pour sécuriser la connexion. Il est essentiel de bien comprendre CORS et d'assurer un traitement approprié des demandes OPTIONS pour prévenir les failles de sécurité.

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