C# MVC访问控制允许源
这与工作有关,但我还没有得到公认的工作答案 我只是从客户端脚本发出ajax请求,该脚本在本地工作,但不在测试服务器上工作 ClientScript.js: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: '
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",