コンテンツ タイプ
これは、リクエスト本文で送信するデータのタイプ (つまり、POST データ) をサーバーに示します。質問の値はapplication/x-www-form-urlencoded
、入力データがキーと値の形式で送信される HTML フォームの送信に使用されます。例:
xmlHttp.send("firstName=bob&lastName=Smith&age=43")
特殊文字がフォーマットを壊さないように、値はURL エンコード(別名、パーセント エンコード) する必要があります。コンテンツ タイプを設定せずに POST リクエストでこのタイプのデータを送信すると、ほとんどのサーバーはデータ タイプを検出して処理します。常に必要というわけではありませんが、設定することをお勧めします (あいまいさはありません)。
JSON データは として送信できapplication/x-www-form-urlencoded
ます。キーを使用して値を JSON に設定するだけです。
myData={"firstName":"bob","age":"43"}
上記の JSON は、使用できる Javascript で URL エンコードする必要があります。encodeURIComponent()
この例では、人間が読めるようにするためにエンコードしていません。これは、POST データを送信するための最も一般的な形式であり、ほとんどのサーバー側言語は、キーと値のペアを自動的に解析して、何らかの種類のネイティブ配列または構造にします。
または、キーやその他のデータ ラベルを付けずに、JSON をリクエスト ボディとしてそのまま送信することもできます。例:
xmlHttp.send('{"firstName":"bob","age":"43"}');
この方法を使用して Content-type を に設定する必要がありapplication/json
ますが、ほとんどのサーバーはこれを設定せずに処理します。HTTP 要求に関する限り、それは単なるテキスト データだからです。サーバー側では、生の POST データにアクセスして JSON を取得する必要があります。ほとんどのサーバー側言語では、未加工の投稿データにアクセスできます。
コンテンツの長さ
content-type と同様に、content-length を設定することをお勧めします。送信しているデータの量をサーバーに伝えるため、サーバーはすべてのデータをいつ受信したかを簡単に知ることができます。そうは言っても、設定されていなくても通常は問題は発生しませんが、W3 ドキュメントでは使用すべきであると述べられています。
接続: 閉じる
接続ヘッダーの送信close
は、サーバーに対して、サポートしていないこと、または要求に永続的な接続を使用したくないことを示します。サーバーはヘッダーで応答する場合がありますがConnection: Keep-alive
、これはクライアントに接続を開いたままにしておくように指示するものではなく、Persistent Connectionsをサポートしていることをクライアントに示すだけです。永続的な接続により、リクエストごとに開いたり閉じたりするのではなく、複数のリクエストに対して同じ TCP 接続を再利用できます。ajax リクエストでこのヘッダーを設定する必要はありません。設定しない場合は、ブラウザが判断して設定します。
概要
要約するConnection
と、必要ありませんが、Content-length
使用する必要があります。Content-type
使用する必要がありますが、サーバーとサーバー側のコードによっては、おそらく必要ありません。