http 要求ヘッダーには、http プロトコルのアップグレード用に設定できる「アップグレード」という名前のフィールドがあります。WebSocket ハンドシェイクの最初のステップと同様に、ヘッダー内の「アップグレード」フィールドを使用して http 要求をサーバーに送信します。
HTTPリクエストヘッダーに「アップグレード」フィールドを設定する方法をいくつか試しました:
1:
$.ajax({
url: "/Http-Header-Test/ServerTest",
type: "POST",
beforeSend: function (xhr)
{
xhr.setRequestHeader("Upgrade", "Dummy Protocol");
},
success: function () {alert("Ajax call success")},
error: function (error) { alert("Ajax call failed: "+ error.status + ": " + error.responseText)}
});
2:
$.ajax({
url: "/Http-Header-Test/ServerTest",
type: "POST",
headers: {"Upgrade" : "Dummy Protocol"
},
success: function () {alert("Ajax call success")},
error: function (error) { alert("Ajax call failed: "+ error.status + ": " + error.responseText)}
});
3:
var client = new XMLHttpRequest();
client.open("POST", "/Http-Header-Test/ServerTest", false);
client.setRequestHeader("Accept", "TEST");
client.setRequestHeader("Upgrade", "Dummy Protocol");
client.send(null);
それらのいずれも、HTTP 要求ヘッダーの「アップグレード」フィールドを変更できません。興味深いのは、「Accept」フィールドを設定できることです。誰か助けてくれませんか?