【问题标题】:jQuery 1.6 cross domain request is not workingjQuery 1.6 跨域请求不起作用
【发布时间】:2011-05-22 05:31:22
【问题描述】:

我正在测试一个从 Web 服务请求数据的普通 html 网站。我的网站在本地运行在 81 端口,网络服务在 61616 端口运行。

这在 jQuery 1.4 中有效。

我已经升级到 1.6 并认真考虑返回,因为跨域实现被破坏了。

在 IE 中找不到资源,显示的 URL 是除主机名:端口之外的所有内容,没有它,(当然)将找不到资源。

在 Chrome 中,我收到以下错误:XMLHttpRequest cannot load http://localhost:61616/ZifmiaService/Register/foo/bar/foo bar/david@company.com。 Access-Control-Allow-Origin 不允许来源http://localhost:81

Web 服务设置了 Access-Control-Allow-Origin:*,因此服务器端允许跨域请求。

我也有:

$.support.cors = true;

在我的客户端 javascript 代码中。

我没有使用 jsonp,我认为我不需要使用正确的设置。

我还做错了什么,或者我应该向 jQuery 报告错误?

    • 添加代码 * *

url如前所述变成61616 url。

this.register = function (username, password, nickName, emailAddress, callback, errorCallback) {
    $.ajax({
        type: "GET",
        url: ZifmiaRegister.format(username, password, nickName, emailAddress),
        crossDomain: true,
        dataType: "json",
        success: function (zifmiaRegistrationViewModel) {
            callback(zifmiaRegistrationViewModel);
        },
        error: function (xhr, textStatus, errorThrown) {
            errorCallback(xhr, textStatus, errorThrown);
        },
        beforeSend: function () { $(ajaxLoading).show(); },
        complete: function () { $(ajaxLoading).hide(); }
    });
}

【问题讨论】:

  • 您的项目中需要升级到 1.6 的要求发生了哪些变化?
  • @david ,贴出你的 ajax 代码,我不认为 1.6 有什么问题,有些设置可能已经改变了..发布你的 ajax 代码,我们可以看到那里有什么问题。跨度>
  • 在主要问题中添加了代码。我使用字符串格式将服务 URL 组合在一起(该服务内置于 WCF 4.0 Rest 中)。您可以在:zifmia.textfyre.com/ZifmiaService/help 看到以前版本的 Web 服务
  • Hmm...1.4.4 现在给出了相同的响应。它曾经工作过!
  • 我将避免这种情况,因为我同时控制客户端和服务,但服务的重点是允许任何客户端从任何地方调用服务,包括网页。

标签: jquery cross-domain


【解决方案1】:

尝试附加“?callback=?”到发出 ajax 请求的 URL。例如,“http://localhost:61616/ZifmiaService/Register/foo/bar/foo bar/david@company.com?callback=?” .

如果您的 URL 包含查询字符串,则应添加“&callback=?”。

【讨论】:

    猜你喜欢
    • 2014-02-09
    • 1970-01-01
    • 2014-09-10
    • 2014-04-18
    • 1970-01-01
    • 2012-04-27
    • 2023-03-17
    • 2013-07-02
    • 1970-01-01
    相关资源
    最近更新 更多