我想我在尝试在提琴手上重现问题时已经解决了这个问题。关闭 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 错误报告的地方,这样我们就可以更好地处理这个可怕的浏览器了。