Jquery AJAX (json) 跨域请求和 ASP.NET MVC
Posted
技术标签:
【中文标题】Jquery AJAX (json) 跨域请求和 ASP.NET MVC【英文标题】:Jquery AJAX (json) cross domain request and ASP.NET MVC 【发布时间】:2011-08-23 13:04:46 【问题描述】:在我看来,这是一个老生常谈的主题,但我找不到答案。 =( 我让 jquery ajax 请求 localhost:666 来自 localhost:555 应用程序
$.ajax(
url: "http://localhost:666/request",
dataType: 'json',
timeout: 5000,
success:...
我有 chrome:
XMLHttpRequest 无法加载 http://localhost:666/request。 Access-Control-Allow-Origin 不允许来源http://localhost:555。
问题的解决方法是什么?
【问题讨论】:
***.com/questions/2697557/… 【参考方案1】:您可以通过创建 XMLHttpRequest 对象或 XDomainRequest 对象在您的网页中发起跨域请求。最终用户的网络浏览器将通过发送一个带有 origin 值的“Origin”标头从域的服务器请求数据。如果服务器以“Access-Control-Allow-Origin: * | Origin”响应,则允许我们访问数据;否则响应将是未经授权的请求。
protected void Application_BeginRequest(object sender, EventArgs e)
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
// HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://AllowedDomain.com");
这里有一篇文章:Cross-Origin requests and ASP.NET MVC
【讨论】:
【参考方案2】:ajax 调用仅限于父域。为此,localhost:666 上的站点无法打开与 localhost:555 的 ajax 连接,因为它们属于不同的域(或来源)
你需要试试jsonp:http://www.google.com/search?q=jsonp
【讨论】:
【参考方案3】:尝试使用 dataType: 'jsonp' 或 $.getJSON 函数。
【讨论】:
以上是关于Jquery AJAX (json) 跨域请求和 ASP.NET MVC的主要内容,如果未能解决你的问题,请参考以下文章
Jquery ajax 请求跨域获取json数据,数据可以获得,但json解析的时候报错,请问有啥方法?