Maison  >  Article  >  développement back-end  >  Pourquoi les données de requête Axios POST sont-elles manquantes dans les variables $POST et $REQUEST de PHP ?

Pourquoi les données de requête Axios POST sont-elles manquantes dans les variables $POST et $REQUEST de PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-22 23:17:29990parcourir

Why is Axios POST Request Data Missing from PHP's $POST and $REQUEST Variables?

Paramètres de publication Axios non disponibles dans les variables PHP

Cet extrait de code utilise la bibliothèque Axios pour effectuer une requête POST, en définissant l'en-tête Content-Type à application/x-www-form-urlencoded :

axios({
    method: 'post',
    url,
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    data: {
        json,
        type,
    }   
})  

Cependant, les variables PHP équivalentes, $_POST et $_REQUEST, restent vides après la requête. Au lieu de cela, file_get_contents("php://input") semble recevoir les données.

Cause et solution

L'écart provient de la façon dont Axios sérialise les données par défaut . Il convertit les objets JavaScript en JSON, que PHP ne prend pas en charge nativement pour remplir $_POST. PHP n'accepte que les formats traitables par machine pris en charge par les formulaires HTML : application/x-www-form-urlencoded et multipart/form-data.

Pour résoudre ce problème, vous disposez de plusieurs options :

  • Navigateur :

    • Utilisez l'API URLSearchParams :

      var params = new URLSearchParams();
      params.append('param1', 'value1');
      params.append('param2', 'value2');
      axios.post('/foo', params); 
    • Utilisez la bibliothèque qs :

      var qs = require('qs');
      axios.post('/foo', qs.stringify({ 'bar': 123 }));
  • Personnalisation de PHP :

    • Ajustez PHP pour gérer JSON selon cette réponse : [lien vers la réponse]

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