J'ai une ancienne application web que je dois supporter (que je n'ai pas écrite).
Lorsque je remplis un formulaire et le soumets, je vérifie l'onglet "Réseau" dans Chrome, je vois "Demander la charge utile" où je verrais normalement "Données du formulaire". Quelle est la différence entre les deux et quand est-ce que l'un serait envoyé au lieu de l'autre?
Googlé cela, mais n'a pas vraiment trouvé d'informations expliquant cela (juste des gens qui essaient d'obtenir des applications javascript pour envoyer des "Form Data" au lieu de "Request Payload".
Réponses:
La charge utile de la demande - ou pour être plus précis: le corps de la charge utile d'une demande HTTP - est les données normalement envoyées par une demande POST ou PUT . Il est la partie après les en- têtes et
CRLF
d'une requête HTTP .Une demande avec
Content-Type: application/json
peut ressembler à ceci:Si vous soumettez ceci par AJAX, le navigateur vous montre simplement ce qu'il soumet en tant que corps de charge utile. C'est tout ce qu'il peut faire car il ne sait pas d'où viennent les données.
Si vous soumettez un formulaire HTML avec
method="POST"
etContent-Type: application/x-www-form-urlencoded
ouContent-Type: multipart/form-data
votre demande peut ressembler à ceci:Dans ce cas, les données de formulaire sont la charge utile de la demande. Ici, le navigateur en sait plus: il sait que la barre est la valeur du champ de saisie foo du formulaire soumis. Et c'est ce que cela vous montre.
Ainsi, ils diffèrent dans
Content-Type
la manière dont les données sont soumises, mais pas dans celle-ci. Dans les deux cas, les données sont dans le corps du message. Et Chrome distingue la façon dont les données vous sont présentées dans les outils de développement.la source
json
oux-www-form-urlencoded
. Le premier envoie les données en tant que charge utile de demande tandis que le second les code en tant que requête d'URL. Les deux semblent bien fonctionner. Y a-t-il une raison de préférer l'un d'entre eux? Je vois la plupart des sites Web comme Twitter, Google, Facebook, Stackoverflow définir le type de contenu commex-www-form-urlencoded
. Une raison précise?Dans Chrome, la demande avec «Content-Type: application / json» s'affiche en tant que Request PayedLoad et envoie les données en tant qu'objet json.
Mais la demande avec 'Content-Type: application / x-www-form-urlencoded' affiche les données du formulaire et envoie les données sous forme de paire clé: valeur , donc si vous avez un tableau d'objets dans une clé, il aplatit la valeur de cette clé:
envoie
la source