Maison > développement back-end > tutoriel php > 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
Libérer: 2024-11-03 14:56:30
original
329 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
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