跨域ajax调用将无法正常工作,即使它在教程中有效

时间:2014-09-10 13:46:41

标签: c# asp.net cors

我在使用ASP.Net。我想使用WebMethod为我的CORS创建跨域ajax调用。

我在互联网上遇到过很多例子,包括许多教程和SO问题,但不知怎的,对我来说都没有用。

看看这个例子,我在这个问题上找到的教程几乎是1:1的代码,并且非常基础:

// Default.aspx.cs
[System.Web.Services.WebServiceBinding(ConformsTo = System.Web.Services.WsiProfiles.BasicProfile1_1)]
public class MyService : System.Web.Services.WebService
{
    [System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json, UseHttpGet = false)]
    public string HelloWorld(string Test)
    {
        string result = "";
        result = "Success";
        return result;
    }
}

// Global.asax
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods",
    "GET, POST");
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers",
    "Content-Type, Accept");
    HttpContext.Current.Response.AddHeader("Access-Control-Max-Age",
    "1728000");
}            

然后我尝试从我的Web浏览器控制台(当然是跨域调用)运行ajax调用:

$.ajax({
    url: "http://localhost:53561/MyService.asmx/HelloWorld",
    type: "POST",
    contentType: "application/json; charset=utf-8",
    data: '{"Test":"asdf"}'
    }).done(function (result) {
        alert(result.d);
    }).fail(function (result) {
        alert(result.d);
});
Stil,即使它应该像魅力一样(如教程页面上所述),我仍然得到了  XMLHttpRequest cannot load http://localhost:53561/MyService.asmx/HelloWorld. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.google.pl' is therefore not allowed access. 我的控制台出错了。

我需要做其他的antyhing吗?我应该在Web.configGlobal.asax中添加更多代码吗?或者有更多的安全理由可以解释为什么这不起作用?

0 个答案:

没有答案