【问题标题】:Jquery AJAX (json) cross domain request and ASP.NET MVCJquery AJAX (json) 跨域请求和 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

问题的解决方法是什么?

【问题讨论】:

标签: asp.net-mvc json jquery


【解决方案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 函数。

      【讨论】:

        猜你喜欢
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 2012-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多