【发布时间】:2012-07-30 23:33:34
【问题描述】:
因为 IE 不支持异步文件上传,所以我正在使用一种解决方法,即将表单发布到 iframe。我绑定 iframe 的 onLoad 事件并在事件触发时读取其内容。这很好用,除非服务器返回 200 以外的状态码,在这种情况下,IE8/IE9 会抛出“SCRIPT5:访问被拒绝”错误。微软似乎已经决定,除非请求返回 200 OK,否则不应允许任何人读取 iframe 的内容。
谷歌搜索没有任何结果,所以我在这里寻求帮助。其他人可以重现这种奇怪的行为吗?有没有围绕这个问题?
iframe 不违反任何跨站点安全政策。都在同一个域中。
【问题讨论】:
-
返回什么状态码?
-
我尝试了 403、404 和 500。它们都使 iframe 内容无法访问(产生上述错误消息)。但是,任何 2xx 或 3xx 状态代码似乎都可以。我可能可以测试更多的状态代码,但我认为模式很清楚 - 状态代码 (4xx, 5xx) 指示的任何服务器或客户端错误都会导致此错误。
-
Windows XP 上的 IE8 似乎没有这个问题。 IE8 中的 IE9 和 Windows 7 上的 IE9 模式一样,Windows 8 上的 IE10 也是如此。
-
你试过其他浏览器吗?你有 jsfiddle 或其他演示代码显示问题吗?
-
我想我已经解决了这个问题。它与 IE 的“显示友好错误消息”“功能”有关。我尝试用代码示例发布更长的答案,但堆栈溢出不会让我再过 4 个小时(另一个很酷的“功能”)。
标签: javascript html internet-explorer iframe