首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从具有不同域的iframe内部进行AJAX调用

从具有不同域的iframe内部进行AJAX调用
EN

Stack Overflow用户
提问于 2011-08-25 08:23:18
回答 2查看 5.7K关注 0票数 0

是否可以从具有不同域源的iframe内部执行AJAX调用?

我尝试过脚本注入,但它不起作用,因为iframe的源码是安全的。我对加州车管所的网站here做了一个简单的修改。

我收到了DOM exception 8错误。这是一个安全问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-25 08:28:59

不能在具有不同域源的iframe中修改或进行JS调用。出于安全原因,这在所有浏览器中都是受限制的。

有关帧间安全性如何工作的说明,请参阅"Same Origin Policy“。简而言之,出于安全原因,不同域上的帧之间几乎不允许通信。您不能在不同域上的帧之间进行任何直接Javascript调用。

有一种方法可以进行跨域ajax调用,它涉及到使用JSONP。基本上,您将一个脚本标记注入到您自己的框架中,该脚本标记指向web上任何位置的服务器端点。由于脚本标记的src值不受同源策略的限制,因此您可以到达该服务器。但是,现在您需要有一种方法来找回结果。这是使用JSONP完成的,您可以在服务器请求中指定希望返回的javascript调用的javascript函数。返回的javascript可以包含javascript数据,然后将这些数据传递给所需的函数。JSONP需要客户机代码和服务器代码之间的协作,因为正常的ajax调用可能不支持JSONP的额外部分。但是,通过双方的这种合作,您可以绕过支持JSONP的服务器端点的同源策略。

HTML5有一个新的消息传递系统,可以在不同域中的协作框架之间安全地通信数据(而不是直接的JS调用)。有关HTML5消息传递工作原理的说明,请参阅herehere

票数 3
EN

Stack Overflow用户

发布于 2011-08-25 08:33:50

是的,这是一个安全问题,因为大多数浏览器执行的是同源策略:http://en.wikipedia.org/wiki/Same_origin_policy

你可以看看JSONP http://niryariv.wordpress.com/2009/05/05/jsonp-quickly/,它是专门为解决这个问题而设计的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7183828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档