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跨域请求,并携带cookie

JQuery的Ajax跨域请求的

Jquery ajax 请求跨域获取json数据,数据可以获得,但json解析的时候报错,请问有啥方法?

jQuery AJAX 跨域请求

是否可以对 application/json 进行跨域 POST ajax 请求?

jQuery实现跨域请求