Javascript &引用;“访问被拒绝”;访问iframe文档对象时出错

Javascript &引用;“访问被拒绝”;访问iframe文档对象时出错,javascript,ajax,iframe,Javascript,Ajax,Iframe,为了在具有许多参数的表单中发布AJAX表单,我使用了一种解决方案,即创建iframe,通过POST将表单发布到表单中,然后访问iframe的内容。 具体而言,我访问的内容如下: $("some_iframe_id").get(0).contentWindow.document 我测试了它,它成功了 在一些页面上,我开始出现“访问被拒绝”错误。据我所知,如果iframe是从同一个域提供的,那么这种情况就不会发生 我敢肯定它以前是有效的。有人有线索吗 如果我不够清楚:我是在同一个域名上发帖。所以这

为了在具有许多参数的表单中发布AJAX表单,我使用了一种解决方案,即创建
iframe
,通过POST将表单发布到表单中,然后访问
iframe
的内容。 具体而言,我访问的内容如下:

$("some_iframe_id").get(0).contentWindow.document
我测试了它,它成功了

在一些页面上,我开始出现“访问被拒绝”错误。据我所知,如果iframe是从同一个域提供的,那么这种情况就不会发生

我敢肯定它以前是有效的。有人有线索吗

如果我不够清楚:我是在同一个域名上发帖。所以这不是一个跨域请求。我只测试IE


另外,我不能使用简单的ajax POST查询(不要问…)

基本上,当框架内和框架外的文档具有不同的域时,会发生此错误。因此,为了防止跨端脚本,浏览器将禁用此类执行。

如果是域问题(或子域),如www.foo.com向www.api.foo.com发送请求

在每个页面上,您可以设置

document.domain = www.foo.com
允许“跨域”权限

我自己解决了

问题是,即使发送的是正确的响应(通过Fiddler验证),但发送的却是HTTP 500错误代码(而不是200)


因此,如果发送带有错误代码的响应,即用从磁盘加载的错误消息(
res://ieframe.dll/http_500.htm
),这会导致跨域访问被拒绝错误。

我知道这个问题太老了,但是我想说的是,上面的答案对我很有用:在每个页面上设置document.domain是相同的——父页面和iframe页面。然而,在我的搜索中,我确实发现了这篇有趣的文章:


注意与iFrame相关的安全限制,如跨域限制(又称CORS)。以下是与CORS相关的3个常见错误:

  • 加载具有不同域的iFrame。(例如:打开“www.foo.com”,顶部框架为“www.ooof.com”)

  • 使用不同的端口加载iFrame:iFrame的URL端口与顶部框架的URL端口不同

  • 不同的协议:当父帧使用HTTP时,通过HTTPS加载iFrame资源


  • 我的问题是
    X-Frame-Options
    HTTP头。我的Apache配置将其设置为:

    Header always append X-Frame-Options DENY
    

    移除它可以让它工作。特别是在我的例子中,我使用iframe transport for jQuery和jQuery文件上传插件来上传IE 9和IE 10中的文件。

    注意,如果您的iframe带有
    src='javascript:void(0)“
    然后类似于
    frame.document.location=…
    的javascript将失败,IE中出现拒绝访问错误。正在使用与目标帧交互的javascript库。尽管它试图将帧更改为的位置与父帧位于同一个域中,但iframe最初设置为javascript:void,这触发了跨域访问拒绝错误

    为了解决这个问题,我在我的站点中创建了一个BLACK.html页面,如果我需要先声明一个iFrAMP,最初将是空白的,直到通过JavaScript更改,然后我指向空白页,以便<代码> SRC=‘/Cyt/BLASE.html’在同一个域中。


    或者,您可以完全通过javascript创建iframe,以便在创建时设置src,但在我的例子中,我使用的库要求在页面上声明iframe。

    我正在发布到同一个域。我正在使用fileupload.js上传文件(它使用iframe)。看起来我也有同样的问题,但我不确定是什么原因造成的。看起来只是超时问题。你是怎么阻止的?我不确定我是否理解这个问题。在任何情况下,如果您认为它与我的解决方案有关,那么您应该查看返回的HTTP代码以及上传的响应。谢谢。在我的例子中,如果上传的文件包含错误(一些验证),我将返回
    400错误请求。它导致“访问被拒绝”错误。此文件替换是由“友好错误消息”功能导致的,您的响应小于512字节。这里的细节:我在我的环境中面临同样的问题。将X-Frame-Options设置为SameOrgin为我解决了这个问题