当前位置:  开发笔记 > 编程语言 > 正文

跨站点AJAX请求

如何解决《跨站点AJAX请求》经验,为你挑选了2个好方法。

我需要从网站向另一个域中托管的REST Web服务发出AJAX请求.

虽然这在Internet Explorer中运行良好,但其他浏览器(如Mozilla和Google Chrome)实施了更为严格的安全限制,禁止跨站点AJAX请求.

问题是我无法控制域或托管站点的Web服务器.这意味着我的REST Web服务必须在其他地方运行,我无法实现任何重定向机制.

以下是进行异步调用的JavaScript代码:

var serviceUrl = "http://myservicedomain";
var payload = "Some content";
var request = new XMLHttpRequest();
request.open("POST", serviceUrl, true); // <-- This fails in Mozilla Firefox amongst other browsers
request.setRequestHeader("Content-type", "text/xml");
request.send(payload);

如何在Internet Explorer旁边的其他浏览器中使用此功能?



1> redsquare..:

也许JSONP可以提供帮助.

NB你必须改变你的消息使用json而不是xml

编辑

flickr和twitter等主要网站都支持jsonp回调等



2> Sean Kinsey..:

标记为答案的帖子是错误的:iframes文档无法访问父级.相同的原产地政策有两种方​​式.

事实是,不可能以任何方式使用xmlhttprequest来使用基于休息的web服务.从不同域(没有任何框架)加载数据的唯一方法是使用JSONP.任何其他解决方案都需要位于您自己的域上的服务器端代理,或位于远程域上的客户端代理以及某些跨站点通信(如easyXDM)来在文档之间进行通信.


问题是关于来自不同领域的文件 - 因此我将采用相同的原产地政策.如果父进程来自domainB,则domainA的IFrame无法访问其父进程的contentDocument.作为easyXSS跨站点库的作者,我对此有一些了解.
推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有