5

我正在使用一个网站,abc.com该网站iframe123.com.
中的页面iframe正在向 上的另一个页面发出 AJAX 请求123.com,但我们看到该请求被取消。

除非我错了——而且我在互联网上没有找到任何官方信息——调用应该可以正常工作,因为它不是跨域请求。

父框架位于不同域的事实真的会阻碍iframe向自己的服务器发出 AJAX 请求吗?

4

1 回答 1

3

IFRAME 应该能够向其自己的原始站点(相同的源 URL)发出 ajax 请求。但是,请确保 REQUEST 事件是从 IFRAME 而不是父级触发的。

我的第一个猜测是您正在加载 IFRAME,然后通过父级 (JS) 对其进行寻址(触发事件)以使其执行/获取/设置触发 ajax 调用的某些内容。简而言之,这是 IFRAME 域到同一域的请求被取消的最可能原因,因为它仍然被浏览器识别为源自目标域代码之外。

REQUEST 事件需要从用户单击 IFRAME 中的某些内容或从 IFRAME 本身触发事件的代码中有机地生成。

换句话说:仅仅因为 IFRAME 可能具有在其 JS/代码中向/从自身触发事件/ajax 的能力,通常仍然不允许通过 JS/代码直接拥有 ajax/JS 的父引用。IFRAME 必须已经根据其加载参数(可能是 URL 值)进行编码,或者用户必须物理单击/采取操作以在该域上创建用户生成的事件。

当然,这会因浏览器和版本的不同而有所不同,因为您可以在父级和 iframe 之间的交互性方面进行哄骗。但是一个严格的、最新的浏览器会尽量防止你通过 js 在 iF​​rame 上伪造不安全的交互。

为了获得更好的答案,您需要提供更多关于您正在做什么/正在做什么的详细信息。

于 2013-04-02T00:50:12.357 回答