1

XMLHttpRequest は初めてで、ここにいくつかの混乱があります。

  1. xmlhttprequest で post メソッドを使用するときにコンテンツ タイプを設定する必要があるのはなぜですか?

    XHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

  2. デフォルト値 application/x-www-form-urlencoded はすでにありませんか?

4

2 に答える 2

1

xmlhttprequest で post メソッドを使用するときにコンテンツ タイプを設定する必要があるのはなぜですか?

XHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

HTTP/POST は、AJAX 経由で (または他の手段で) HTTP/POST を実行するときに、その特定のコンテンツ タイプを要求しません。それはあなた次第です(そしてそれを処理するサーバー側プログラム次第です)。明示的に設定する必要がある理由については、2 番目のセクションを参照してください。

多くの場合、フォームをシリアル化し (パーセンタイル エンコード -- a=b&c=d 形式)、サーバーに送信します。この形式はapplication/x-www-form-urlencoded. XML を送信する場合は を使用application/xmlし、JSON には を使用application/jsonします。

GET リクエストに関しては、本文がないため、実際には content-type ヘッダーは必要ありません。

デフォルト値 application/x-www-form-urlencoded はすでにありませんか?

ここで、デフォルトの content-type ヘッダーをざっと調べてみました。何も見つかりませんでした。しかし、Chrome のコンソールから HTTP/POST AJAX リクエストを実行しようとすると、Chrome のデフォルトがapplication/xml.

ちょっとしたアドバイスです。明示的に述べられているか、標準の一部である場合を除いて、デフォルトの動作に決して依存しないでください。コンテンツ タイプを明示的に設定しないのはなぜですか?

于 2013-01-04T05:42:46.327 に答える