У меня есть старое веб-приложение, которое я должен поддерживать (которое я не написал).
Когда я заполняю форму и отправляю, затем проверяю вкладку «Сеть» в Chrome, я вижу «Запрос полезной нагрузки», где я обычно вижу «Данные формы». В чем разница между двумя и когда один будет отправлен вместо другого?
Погуглил, но на самом деле не нашел никакой информации, объясняющей это (просто люди, пытающиеся заставить приложения javascript отправлять «Данные формы» вместо «Запросить полезную нагрузку»).
Ответы:
Полезная нагрузка запроса - или, если быть более точным: тело полезной нагрузки HTTP-запроса - это данные, обычно отправляемые с помощью запроса POST или PUT . Это часть после того, как заголовки и
CRLF
из HTTP запроса .Запрос с
Content-Type: application/json
может выглядеть так:Если вы отправите это в соответствии с AJAX, браузер просто покажет вам, что он представляет в качестве тела полезной нагрузки. Это все, что он может сделать, потому что он не знает, откуда поступают данные.
Если вы отправляете HTML-форму с
method="POST"
иContent-Type: application/x-www-form-urlencoded
илиContent-Type: multipart/form-data
ваш запрос может выглядеть следующим образом:В этом случае данные формы являются полезной нагрузкой запроса. Здесь браузер знает больше: он знает, что bar является значением поля ввода foo отправленной формы. И это то, что он показывает вам.
Таким образом, они отличаются,
Content-Type
но не в способе представления данных. В обоих случаях данные находятся в теле сообщения. И Chrome различает, как данные представляются вам в Инструментах разработчика.источник
json
либоx-www-form-urlencoded
. Первый отправляет данные как полезные данные запроса, а второй кодирует их как URL-запрос. Оба, кажется, работают нормально. Есть ли причина предпочесть один из них? Я вижу, что большинство сайтов, таких как Twitter, Google, Facebook, Stackoverflow, устанавливают тип контента какx-www-form-urlencoded
. Любая конкретная причина?В Chrome запрос с Content-Type: application / json отображается как Request PayedLoad и отправляет данные как объект json.
Но запрос с Content-Type: application / x-www-form-urlencoded показывает данные формы и отправляет данные в виде пары ключ: значение , поэтому, если у вас есть массив объектов в одном ключе, он отображает значение этого ключа:
посылает
источник