【发布时间】: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