我需要从一个网站向另一个域中托管的REST Web服务发出AJAX请求。
尽管这在Internet Explorer中很好用,但是其他浏览器(例如Mozilla和Google
Chrome)强加了更加严格的安全性限制,这些限制禁止跨站点AJAX请求。
问题是我无法控制站点所在的域或Web服务器。这意味着我的REST Web服务必须在其他地方运行,并且我无法采用任何重定向机制。
这是进行异步调用的JavaScript代码:
var serviceUrl = "http://myservicedomain";
var payload = "<myRequest><content>Some content</content></myRequest>";
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之外的其他浏览器中进行此项工作?
也许JSONP可以提供帮助。
注意您必须将您的消息更改为使用json而不是xml
编辑
诸如flickr和Twitter之类的主要站点都支持带有回调等的jsonp
问题内容: 浏览器不允许跨站点AJAX调用(这是安全限制)。有没有可能的解决方案? 编辑 我只控制来电者的网站 问题答案: 如果您控制双方,那么会有很多选择。例如JSONP,或修改远程网站的标头响应。 不幸的是 ,只有在远程网站支持的情况下,JSONP才有效。您 不能 将JSONP调用强制到尚不支持它的网站。 但是,正如您所说,您只能控制源网站。出于明显的原因,您无法绕过此限制来入侵浏览器。您确实
问题内容: 我正在尝试使用“ GWT请求”构建器发出“跨站点请求”,但我无法使其正常工作。如您所见,这是一个GWT示例项目的大部分内容,我已经浏览了https://developers.google.com/web- toolkit/doc/latest/tutorial/Xsite 。但是我仍然缺少一些东西。 我在这里发布代码。我在想什么..? 问题答案: 实际上,如果可以在Servlet Re
问题内容: 我有一个现有的jQuery插件,可以进行很多AJAX调用(主要是JSON)。我想知道最快允许它进行跨站点调用的方法,即$ .get和$ .post URL不会来自同一域。 我听说过JSONP,但是想知道是否有人可以给我一个具体的例子来介绍整个过程。如果可能,我希望对脚本进行最少的更改。我应该使用某种proxy.php吗? 感谢您的时间。 问题答案: JSONP将允许您进行跨站点调用。请
问题内容: 我想提供一段Javascript代码,该代码可在包含Javascript的任何网站上运行,但是它始终需要在托管Javascript的服务器上获取更多数据(甚至修改数据)。我知道出于明显的原因有一些安全限制。 考虑xyz.com上托管的index.html,其中包含以下内容: some.js能够使用XMLHttpRequest将数据发布到abc.com吗?换句话说,因为我们从那里加载了J
CSRF攻击迫使经过身份验证的用户(受害者)发送伪造的HTTP请求,包括受害者的会话cookie到易受攻击的Web应用程序,这允许攻击者强制受害者的浏览器生成请求,以便易受攻击的应用程序感知来自受害者。 我们下面来了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。 威胁代理 - 任何人都可以将内容加载到用户的浏览器中,从而迫使他们向您的网站提交请求。 攻击者的方法 - 攻击者创建伪造
跨站请求伪造(CSRF)是一种漏洞利用,攻击者致使受害的最终用户按恶意URI(例如以误导的链接、图片或重定向提供给用户代理)到达受信任的服务器(通常由存在有效的会话Cookie而建立)。 针对客户端的重定向URI的CSRF攻击允许攻击者注入自己的授权码或访问令牌,这将导致在客户端中使用与攻击者的受保护资源关联的访问令牌而非受害者的(例如,保存受害者的银行账户信息到攻击者控制的受保护资源)。 客户端