Web開発の用語で私の初心者を許してください。
次の[WebMethod]を実行しようとしています。
public static void CreatePendingCaseFromChat(string userInputs)
{
//Do a bunch of stuff here with the userInputs string
}
次のAJAX(別のサーバーに存在する)を使用する場合:
$.ajax({ type: "POST",
url: "http://www.MyCoolWebDomain.com/Code/MyCode.aspx/CreatePendingCaseFromChat",
crossDomain: true,
data: JSON.stringify(parameters),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data){alert("success in ajax call")},
error: function (data){alert("error in ajax call")}
});
MyCode.aspxには、Page_Load()メソッド内に次の行が含まれています。
Response.AppendHeader("Access-Control-Allow-Origin", "*"); //Allow Cross domain AJAX call, update the "*" to be a specific URL
Response.AppendHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
Response.AppendHeader("Access-Control-Allow-Headers", "content-type, x-requested-with");
ajax呼び出しの代わりに、次のことを行うと、次のようになります。
var invocation = new XMLHttpRequest();
var url = "http://www.MyCoolWebDomain.com/Code/MyCode.aspx/CreatePendingCaseFromChat"
if (invocation) {
invocation.open('POST', url, false);
invocation.send();
}
else {
alert("no invocation");
}
次に、FireBugを使用して、次の応答ヘッダーが設定されていることを確認できます。
Access-Control-Allow-Head... content-type, x-requested-with
Access-Control-Allow-Meth... GET, POST, OPTIONS
Access-Control-Allow-Orig... *
AJAX呼び出しでは、これらのヘッダーは表示されません。
AJAX呼び出しでも、XHR呼び出しでも、どちらの方法でもこれを機能させたいと思います。
XHR呼び出しの場合、userInputs文字列をWebMethodに送信する方法がわかりません。AJAX呼び出しの場合、プリフライトを通過させることも、呼び出されることもできません(OPTIONS呼び出し)。