0

POST データがリクエストの本文で送信される場合、なぜ URL エンコーディングを使用するのでしょうか?

POST 要求では、要求の本文で送信されるデータを記述するために contentType を設定する必要があり、url エンコーディングが一般的に使用されます。

GET リクエストはボディがないため、そうではありません。リクエスト パラメータは URL にあります。

これがコードでどのように見えるかを次に示します (正常に動作します)。

/******************************************************************************/
// AJAX

    $P.ajax = function (config_ajax) {
        var xhr;

        // get

        if (config_ajax.type === 'get') {
            xhr = new win.XMLHttpRequest();
            xhr.open('GET', config_ajax.url, true);
            xhr.onload = function () {
                if (this.status === 200) {
                    config_ajax.callback(xhr.responseText);
                }
            };
            xhr.send(null);
        }

        // post

        if (config_ajax.type === 'post') {
            xhr = new win.XMLHttpRequest();
            xhr.open("POST", config_ajax.url, true);
            xhr.setRequestHeader("Content-type",
                    "application/x-www-form-urlencoded");
            xhr.onload = function () {
                if (this.status === 200) {
                    config_ajax.callback(xhr.responseText);
                }
            };
            xhr.send(config_ajax.data);
        }

ここでは、GET の送信データが null であり、POST の送信データが入力されていること、および POST データが URL エンコードされていること () と GET データがそうでないことを確認できます。

URL エンコーディングはデフォルトではありません。指定しない場合、または他のエンコーディングを指定すると、エラーがスローされます。

私が求めているのは、なぜそれをオフにして ( POST の contentType )、データを転送できないのでしょうか?

または、仕様によって Content-type が必要な場合。URL エンコーディング以外に使用できるものはありますか。

前述のように、データは URL に含まれておらず、URL エンコードを必要としないため、より単純なものを使用することをお勧めします。

私の推測では、これは不可能であり、これは単なるデフォルトであり、Ajax の前に使用されていたものであり、おそらく POST リクエストが URL を使用したときに使用されたのでしょうか?

4

1 に答える 1