Échec du POST AngularJS : résolution du code d'état HTTP non valide
Dans cet article, nous abordons le problème de « La réponse au contrôle en amont a un HTTP invalide code d'état 404" qui apparaît lors de l'envoi de requêtes POST d'AngularJS à un serveur.
Le code AngularJS fourni configure une requête GET qui récupère avec succès les données du serveur. Cependant, la requête POST rencontre l'erreur susmentionnée en raison de la requête OPTIONS de contrôle en amont envoyée par le navigateur. La politique CORS (Cross-Origin Resource Sharing) exige que les navigateurs envoient une requête OPTIONS de contrôle en amont avant de faire des requêtes réelles.
Dans SlimPHP, le serveur gère CORS en définissant les en-têtes nécessaires. Cependant, l'inspection des en-têtes de requête/réponse révèle que le serveur renvoie un code d'état 404 pour la requête OPTIONS de contrôle en amont, ce qui est incorrect.
Pour résoudre ce problème, le code AngularJS côté client doit être modifié pour empêcher la demande OPTIONS de contrôle en amont. Ceci peut être réalisé en réinitialisant les en-têtes par défaut en utilisant :
<code class="javascript">app.config(function ($httpProvider) { $httpProvider.defaults.headers.common = {}; $httpProvider.defaults.headers.post = {}; $httpProvider.defaults.headers.put = {}; $httpProvider.defaults.headers.patch = {}; });</code>
En réinitialisant ces en-têtes, le navigateur n'enverra plus la requête OPTIONS de contrôle en amont. Au lieu de cela, il enverra directement la demande POST réelle, en contournant le code d'état problématique 404 pour la demande de contrôle en amont.
Cette solution souligne l'importance de comprendre la politique CORS et de gérer correctement les demandes de contrôle en amont. En abordant à la fois les aspects côté client et côté serveur de CORS, les développeurs peuvent garantir le succès des requêtes d'origine croisée et éliminer l'erreur « Code d'état HTTP 404 non valide ».
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!