我使用的是一个网站abc.com
,它在123.com
上承载iframe
页面。
iframe
中的页面正在对123.com
上的另一个页面发出AJAX请求,但我们看到请求被取消。IFRAME内部的AJAX不能在同一台服务器上工作
除非我错了 - ,我还没有在互联网上找到关于此的任何官方信息 - 由于呼叫不是跨域请求,因此呼叫应该正常工作。
父框架位于不同域的事实是否会阻止iframe
对自己的服务器执行AJAX请求?
我使用的是一个网站abc.com
,它在123.com
上承载iframe
页面。
iframe
中的页面正在对123.com
上的另一个页面发出AJAX请求,但我们看到请求被取消。IFRAME内部的AJAX不能在同一台服务器上工作
除非我错了 - ,我还没有在互联网上找到关于此的任何官方信息 - 由于呼叫不是跨域请求,因此呼叫应该正常工作。
父框架位于不同域的事实是否会阻止iframe
对自己的服务器执行AJAX请求?
IFRAME应该能够对其自己的始发站点(相同的源URL)发出ajax请求。但是,请确保REQUEST事件是从IFRAME,而不是父级。
我的第一个猜测是,你正在加载的IFRAME,然后解决它(触发事件)通过父(JS),以得到它做/获取/设置一些东西,触发一个Ajax调用。简而言之,这是IFRAME域到相同域请求被取消的最可能原因,因为它仍然被浏览器识别为源自目标域代码之外。
请求事件必须有机从用户点击位于IFRAME本身触发事件东西在IFRAME或从代码生成。
换句话说:只是因为IFRAME可能触发事件/ AJAX在其JS /代码/从本身的一些能力,它通常会仍然不允许有父引用,AJAX/JS直接通过JS /代码。 IFRAME必须根据其加载参数(可能是URL值)进行编码,否则用户必须在某物上点击/采取措施才能在该域上创建用户生成的事件。
当然,这可能会因浏览器和版本的不同而有所不同,因为您可能会根据父级和iframe之间的交互性进行哄骗。但是一个严格的,最新的浏览器会试图阻止你通过js在iFrame上伪造不安全的交互。
为了得到更好的答案,您需要提供更多关于您正在做/正在做什么的细节。
我们可以在行动中看到它吗? iframe中是否有任何选项?这是发生在一个特定的浏览器? – Tchoupi 2013-03-16 23:13:46
您能否至少复制粘贴完整的错误信息(来自FireBug或开发控制台)以提供更多信息? – hnafar 2013-03-16 23:16:25
可能与SSL有关。我做了一个快速搜索,发现这个 http://stackoverflow.com/questions/10756526/jquery-ajax-call-fails-and-returns-error-on-facebook-iframes – VishwaKumar 2013-03-22 13:19:51