Ajax和REST:我可以向REST服务发送Ajax请求以接收响应吗?

Ajax和REST:我可以向REST服务发送Ajax请求以接收响应吗?,ajax,rest,xss,Ajax,Rest,Xss,我想使用mootools和squezbox类来处理对RESTful服务的请求。我不想使用任何服务器端脚本。我正在使用AJAX。我使用GET方法向以下url发送请求。 但我收到一个404错误。是因为跨站点脚本吗?这是我的密码: SqueezeBox.initialize({handler:'url',ajaxOptions:{method:'GET'}}); $('a.modal').addEvent('click',function(e){ new Event(e).stop();

我想使用mootools和squezbox类来处理对RESTful服务的请求。我不想使用任何服务器端脚本。我正在使用AJAX。我使用GET方法向以下url发送请求。 但我收到一个404错误。是因为跨站点脚本吗?这是我的密码:

SqueezeBox.initialize({handler:'url',ajaxOptions:{method:'GET'}}); $('a.modal').addEvent('click',function(e){ new Event(e).stop(); SqueezeBox.fromElement($('a.modal')); }); 初始化({handler:'url',ajaxOptions:{method:'GET'}}); $('a.modal').addEvent('click',函数(e){ 新事件(e.stop(); 挤压盒.fromElement($('a.modal')); });
在Firebug控制台中,有时显示“中止”,有时显示“404”。这有什么问题?

您不能使用XMLHttpRequest(即普通的“ajax”)在不在您的域中的服务器上调用服务


但是,您可以使用JSONP技巧,它利用了浏览器将从其他域加载Javascript这一事实。然而,服务必须知道您将要这样做,并且它必须理解协议。那个特定的服务似乎非常愿意给我一个JSON响应,但当我给它一个“回调”参数时,它并没有注意到。(我尝试了“回调”和“jsonp”,返回的JSON blob是相同的,没有函数调用包装器。)

XMLHttpRequest受;如果运行JavaScript的文档与尝试调用的服务的来源不同,出于安全原因,将不允许调用


现在有一个建议的标准来解决这个问题。可能是您尝试使用的服务支持它;如果是这样,使用实现CORS(Firefox和Chrome的最新版本,以及其他一些版本)的浏览器可能会起作用。IE8但要求您做额外的工作。

我在请求中看到一些标题,似乎是跨源标题。我得到了响应,但有404错误。所以我想电话打了。访问控制请求方法:获取访问控制请求头:x-requested-withYes,这两个都是CORS请求头(也应该有一个
来源
)。如果你得到一个404(我在你最初的问题中错过了!),那应该意味着资源根本不在该URL上,而不是你没有访问它的权限(这就是401、403等等的目的-)。更新:我刚刚尝试了一下,得到了相同的结果:一个直接的浏览器请求给了我JSON,但我无法通过XHR加载它。原因是idevcenter使用404响应选项请求,这意味着它们不支持CORS(或者至少不支持预装CORS)。我本以为不是404,但嘿,CORS是新的。这可能值得问他们是否会考虑。嘿,谢谢!!你的回答真的很有帮助。我给他们发了一封电子邮件。也许他们会回答;)谢谢你的关注。如果无法发送请求,为什么会收到404错误的响应?我想若并没有呼叫,我就不会得到服务器的响应。