当前位置:  开发笔记 > 编程语言 > 正文

访问iframe文档对象时出现"访问被拒绝"错误

如何解决《访问iframe文档对象时出现"访问被拒绝"错误》经验,为你挑选了2个好方法。

为了在包含许多参数的表单中发布AJAX表单,我使用的是创建一个解决方案,iframe通过POST将表单发布到它,然后访问其iframe内容.具体来说,我正在访问这样的内容:

$("some_iframe_id").get(0).contentWindow.document

我测试了它,它工作.

在某些页面上,我开始收到"访问被拒绝"错误.据我所知,如果iframe是从同一个域提供的,那么这不应该发生.

我很确定它之前有效.有人有线索吗?

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

PS我不能使用简单的ajax POST查询(不要问......)



1> Ovesh..:

自己解决了!

问题是,即使正在发送正确的响应(通过Fiddler验证),它也会被发送一个HTTP 500错误代码(而不是200).

事实证明,如果发送带有错误代码的响应,IE将iframe使用从disk(res://ieframe.dll/http_500.htm)加载的错误消息替换该内容,并导致跨域访问被拒绝错误.


谢谢.在我的情况下,如果上传的文件包含错误(一些验证),我将返回"400 Bad Request".它导致"访问被拒绝"错误.
此文件替换是由"友好错误消息"功能*和*引起的,您的响应低于512字节.详情请访问:http://stackoverflow.com/questions/11769962/internet-explorer-cant-access-iframe-contents-unless-status-code-is-200

2> Gal Blank..:

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

    加载具有不同域的iFrame.(例如:打开" www.foo.com ",而顶部框架是" www.ooof.com ")

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

    不同协议:通过HTTPS加载iFrame资源,而父帧使用HTTP.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有