尝试执行cs WebMethod时禁止跨域AJAX POST 403

时间:2013-01-10 19:57:17

标签: c# javascript ajax cross-domain cors

请原谅我在网络开发术语中的愚蠢。

我正在尝试执行以下[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调用,我无法通过预检或w / e调用(OPTIONS调用)。

1 个答案:

答案 0 :(得分:1)

我发布了一堆问题代码:

CORS - Ajax error function reports error code as 0 for an API request returning 401

它正在使用MVC4,但应该为您提供实现这一目标所需的一切。