【问题标题】:AJAX inside IFRAME not working against same serverIFRAME 中的 AJAX 不适用于同一台服务器
【发布时间】:2013-03-16 23:05:21
【问题描述】:

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

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

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

【问题讨论】:

  • 我们能看到它的实际效果吗? iframe 中是否有任何选项?特定浏览器会发生这种情况吗?
  • 您能否至少复制粘贴完整的错误消息(来自 FireBug 或开发控制台)以提供更多信息?
  • 可能与 SSL 有关。我快速搜索了一下,发现了这个stackoverflow.com/questions/10756526/…

标签: ajax iframe


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 2011-11-19
    • 1970-01-01
    相关资源
    最近更新 更多