Chrome開発ツールの[ネットワーク]タブに表示される「リクエストペイロード」と「フォームデータ」の違いは何ですか


244

私がサポートしなければならない古いWebアプリケーションがあります(私が作成しなかったものです)。

フォームに入力して送信すると、Chromeの[ネットワーク]タブを確認すると、通常は[フォームデータ]が表示される[リクエストペイロード]が表示されます。2つの違いは何ですか?一方が他方の代わりにいつ送信されるのですか?

これをグーグル化したが、これを説明する情報は実際には見つかりませんでした(「リクエストペイロード」の代わりに「フォームデータ」を送信するようにJavaScriptアプリを取得しようとしている人々だけです。




2
それでも、この2つの違いはわかりません。「リクエストペイロード」は、タイプでエンコードされていないリクエストだけですか?
red888 2014

回答:


274

要求ペイロード-より正確には、HTTP要求のペイロード本体 -は、通常POSTまたはPUT要求によって送信されるデータです。これは、ヘッダと後の部分ですCRLFHTTPリクエスト

のリクエストは次のContent-Type: application/jsonようになります。

POST /some-path HTTP/1.1
Content-Type: application/json

{ "foo" : "bar", "name" : "John" }

AJAXごとにこれを送信する場合、ブラウザはペイロードボディとして送信するものを表示するだけです。データの出所がわからないため、これですべてです。

を使用してHTMLフォームを送信した場合method="POST"Content-Type: application/x-www-form-urlencodedまたはContent-Type: multipart/form-dataリクエストは次のようになります。

POST /some-path HTTP/1.1
Content-Type: application/x-www-form-urlencoded

foo=bar&name=John

この場合、フォームデータはリクエストのペイロードです。ここで、ブラウザはより多くを認識します。barは送信されたフォームの入力フィールドfooの値であることを認識しています。そしてそれはあなたにそれが示していることです。

したがって、Content-Typeデータの送信方法は異なりますが、データの送信方法は異なります。どちらの場合も、データはメッセージ本文にあります。また、Chromeでは、デベロッパーツールでのデータの表示方法が区別されます。


3
サイズなどの点で他のものを優先する理由はありますか?特に軽量のAJAX呼び出しの場合は?
ユーザー

@bufferすみません、あなたの質問は理解できません。
lefloh 2014

3
AJAX呼び出しを送信する場合は、content-typeをjsonまたはに設定できますx-www-form-urlencoded。前者はデータを要求ペイロードとして送信し、後者はそれをURLクエリとしてエンコードします。どちらも正常に動作するようです。それらの1つを好む理由はありますか?Twitter、Google、Facebook、StackoverflowなどのほとんどのWebサイトでコンテンツタイプがに設定されていx-www-form-urlencodedます。具体的な理由は?
ユーザー

2
これは実際にはOPとは関係ありませんが、おそらくこの答えが役立つでしょう。
lefloh 2014

13

Chromeでは、「Content-Type:application / json」を含むリクエストはRequest PayedLoadとして表示され、データをjsonオブジェクトとして送信します。

しかし、「Content-Type:application / x-www-form-urlencoded」使用したリクエストでは、フォームデータが表示され、データがKey:Value Pairとして送信されるため、1つのキーにオブジェクトの配列がある場合、そのキーの値はフラット化されます。

{ Id: 1, 
name:'john', 
phones:[{title:'home',number:111111,...},
        {title:'office',number:22222,...}]
}

送る

{ Id: 1, 
name:'john', 
phones:[object object]
phones:[object object]
}

もちろんPHPは悪です。application / x-www-form-urlencodedの人気は、PHPの人気によって定義されます。
ブライアンハーク

4
「jsonオブジェクト」などがないため、反対票が投じられました。jsonは本質的に文字列であるため、送信されたjsonデータはプレーンな文字列として送信されます。もちろん、json_encodeを使用して標準の「オブジェクト」に変換できますが、それによって「jsonオブジェクト」になることもありません。
Volkan Ulukut 2016

わかりました、javascript jsonテンプレートオブジェクトまたは単にjavascriptオブジェクトの方が良いと思います
Mohammadreza

1
"json"だけ、またはタイプ "json string"を強調したい場合は問題ありません。
Volkan Ulukut 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.