Lors de l'utilisation de Vue.js et Nginx, nous rencontrons souvent le problème que le backend ne peut pas accepter les paramètres. Cela se produit généralement lors de l'envoi de données au serveur backend à l'aide de la méthode POST. Parfois, même si les en-têtes de requête et le format des données sont correctement définis dans le code front-end, le serveur back-end ne peut toujours pas recevoir correctement les paramètres.
Cet article présentera les raisons de ce problème dans Vue.js et Nginx et proposera des solutions réalisables.
Cause du problème
Dans Vue.js, nous utilisons la bibliothèque axios pour envoyer des requêtes HTTP. Par exemple, nous pouvons envoyer une requête POST en utilisant axios comme ceci :
axios.post('/api/user', { name: 'john', age: 26 }, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } })
Dans cette requête, nous passons un objet JavaScript contenant le nom d'utilisateur et l'âge en paramètres à la méthode axios.post. Nous avons également spécifié le format des données comme application/x-www-form-urlencoded dans l'en-tête de la requête. Cela signifie que nous voulons que le serveur analyse correctement cet objet et le convertisse au format de données approprié.
Cependant, si nous utilisons Nginx comme serveur, nous constatons généralement qu'il n'analyse pas correctement les données envoyées. En effet, Nginx ne prend pas en charge par défaut le format de données application/x-www-form-urlencoded dans les requêtes POST.
Solution
Pour résoudre ce problème, nous devons ajouter une directive dans le fichier de configuration Nginx. Plus précisément, nous devons ajouter une directive similaire à la suivante :
location /api { proxy_pass http://localhost:8000; proxy_set_header Content-Type application/x-www-form-urlencoded; }
Dans cette directive, nous utilisons la directive location pour définir le chemin de la requête sur /api. Nous utilisons également la directive proxy_pass pour envoyer des requêtes au serveur backend. La chose la plus critique est que nous utilisons la directive proxy_set_header pour définir le Content-Type dans l'en-tête de la requête sur application/x-www-form-urlencoded. De cette façon, Nginx peut analyser correctement les données de requête POST envoyées par Vue.js.
En plus de définir le Content-Type sur application/x-www-form-urlencoded, nous pouvons également le définir sur application/json. Cela dépend du format de données que nous envoyons.
Résumé
Lors du développement à l'aide de Vue.js et Nginx, il est courant que le backend ne puisse pas accepter les paramètres. En effet, Nginx ne prend pas en charge par défaut le format de données application/x-www-form-urlencoded dans les requêtes POST. Pour résoudre ce problème, nous devons ajouter une directive au fichier de configuration Nginx pour définir le Content-Type dans l'en-tête de la requête au format de données correct. J'espère que cet article pourra vous aider à résoudre des problèmes similaires.
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!