C# MVC访问控制允许源

C# MVC访问控制允许源,c#,javascript,ajax,asp.net-mvc,C#,Javascript,Ajax,Asp.net Mvc,这与工作有关,但我还没有得到公认的工作答案 我只是从客户端脚本发出ajax请求,该脚本在本地工作,但不在测试服务器上工作 ClientScript.js: var AppViewModel = function () { var self = this; self.Refresh = function () { $.ajax({ url: "http://localhost/AppName/ControllerName/GetData", type: '

这与工作有关,但我还没有得到公认的工作答案

我只是从客户端脚本发出ajax请求,该脚本在本地工作,但不在测试服务器上工作

ClientScript.js:

var AppViewModel = function () {
var self = this;

self.Refresh = function () {
    $.ajax({
        url: "http://localhost/AppName/ControllerName/GetData",
        type: 'GET',
        contentType: 'application/json; charset=utf-8',
        success: function (data, textStatus, jqXHR) {
            //do stuff
        },
        error: function (jqXHR, textStatus, errorThrown) {
            //should do something here
        },
        complete: function (jqXHR, textStatus) {
            //other stuff
        }
    });
}
对于我的MVC web服务,我在global.asax.cs中添加了以下功能:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost");
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://testdev");
    }
当我部署到“testdev”服务器时,仍然会收到以下错误消息:


我在这里遗漏了什么?

您使用的是绝对url(
http://localhost/AppName/ControllerName/GetData
),仅在本地环境中有效。把它改成这样

url: "/AppName/ControllerName/GetData",

@Erlend:这不是跨域的,因为它是相对于当前域的。不知道你为什么这么说。@克劳迪奥雷迪:这是我的观点。Chronozoa正试图找出如何让访问控制允许源站工作,这里的答案是不使用跨域请求。所以你可以删除整个标题。@Erlend:恐怕你完全错了,他不是在试图访问跨域资源,他是在试图知道为什么会出现这个错误。另外,考虑到他将问题标记为已解决,并说“谢谢,这已经解决了!”@ClaudioRedi:在这种情况下,问题标题是没有意义的,因为标题是用于跨域请求的。然后,他应该删除global.asax.cs中的内容,因为同一来源请求不需要这些内容。@Erlend:我不知道我们在这里讨论什么。。。您是否注意到他将指向
localhost
的链接部署到不同的环境????这就是问题所在,也是他首先需要解决的问题。如果您有任何其他问题或建议,请联系提出问题的用户。
url: "/AppName/ControllerName/GetData",