0

私が使用しているサードパーティのサービスは非常に特殊です。受け入れヘッダーをに設定しようとしています

Accept: application/json

しかし、jquery 1.4.4 はそれだけでは送信しません。バリエーションを送信し続けます。つまり:

Accept: */*, application/json

いくつかのバリエーション、つまり以下のバリエーションを試しました。acceptヘッダーで「Accept:application/json」だけを送信するにはどうすればよいですか?

jQuery.ajax({
    url: "/rest/cms.country",
    beforeSend: function (xhr) { xhr.setRequestHeader('Accept', 'application/json'); },
    contentType: "application/json; charset=utf-8",
    type: 'get',
    success: function () {
        console.log('success');
    },
    error: function (jqXHR, textStatus, errorThrown) {
        console.log('error' + errorThrown);
    }
});
4

1 に答える 1

0

W3C 仕様によると、リクエスト ヘッダーの設定は既存の値に追加されることになっているため、すでに「*/*」であり、リクエストが「application/json」を追加する前に設定します。

また、thisによると、仕様では受け入れ値として「*/*」が必要になるため、サーバーは仕様に違反しています(ここでの問題はわかりません)。

あなたが望むのは、あなたの値を設定する前にブラウザが「*/*」の既存の値をクリアすることです。

setRequestHeader('Accept', '')

あなたのAJAXリクエストの前に?これはブラウザーに依存するため、おそらく IE をお楽しみいただけます。

于 2012-11-29T23:01:13.997 に答える