gpt4 book ai didi

javascript - 互联网浏览器 : Can't Access IFrame Contents Unless Status Code is 200

转载 作者:搜寻专家 更新时间:2023-10-31 08:20:39 24 4
gpt4 key购买 nike

因为 IE 不支持异步文件上传,所以我使用了一种变通方法,即将表单发布到 iframe。我绑定(bind)了 iframe 的 onLoad 事件,并在触发事件时读取其内容。这很好用,除非服务器返回 200 以外的状态代码,在这种情况下 IE8/IE9 会抛出“SCRIPT5:访问被拒绝”错误。微软似乎已经决定,除非请求返回 200 OK,否则不应允许任何人读取 iframe 的内容。

谷歌搜索没有任何结果,所以我在这里寻求帮助。其他人可以重现这种奇怪的行为吗?有什么办法解决这个问题吗?

iframe 不违反任何跨站点安全策略。它们都在同一个域中。

最佳答案

我想我已经解决了这个问题,同时尝试在 fiddler 上重现该问题。关闭 IE 中的“显示友好的 HTTP 错误消息”似乎可以解决这个问题。我无法在 fiddler 上重现它的原因是它们的 404 页面超过 512 字节,因此无论如何它都会显示 nginx 错误。

基本上,整个问题是,当页面小于 512 字节(或在某些情况下为 256 字节)时,IE 似乎会替换整个页面,从而导致以编程方式阻止对该页面的访问。显然,微软的疏忽似乎仍然存在于 IE10 中。

它很容易重现。只需将以下内容放在服务器下的文件(例如 test.html)中,然后返回 512 字节以下的 404 响应代码,并确保您的 IE 设置为显示友好的错误消息(同时确保“test1.file”实际上没有存在)。在打开开发人员控制台的情况下使用 IE 访问该页面,您应该会看到“访问被拒绝”错误。刷新页面的方式会改变结果。 CTRL+F5 似乎没有出现问题,但 CTRL+R 或 F5 出现了。

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<script type="text/javascript">
iframe = document.createElement('iframe')
iframe.src = '/test1.file'
document.body.appendChild(iframe )
iframe.contentDocument
</script>
</body>
</html>

现在,要是我能找到可以提交 IE10 错误报告的地方就好了,这样我们就能更好地处理这个可怕的浏览器了。

关于javascript - 互联网浏览器 : Can't Access IFrame Contents Unless Status Code is 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11769962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com