IE不遵循重定向,给出"Internet Explorer无法显示网页"

nic*_*des 11 internet-explorer http http-headers

我有一个带有几个字段的表单.提交表单时,服务器将使用重定向进行响应(HTTP 302).

提交表单时,如果有<input type=file>字段,IE不会遵循重定向,而是会出错:"Internet Explorer无法显示网页".

如果没有 <input type=file>字段,则它会按预期执行重定向.

HTTP 302响应在两种情况下完全相同,仅区别于响应的时间戳.

我在IE8和IE9中遇到过这种情况.(我没有尝试过较低版本).Firefox,Chrome,Opera和Safari都按照预期重定向.

笔记:

  • 表单具有属性enctype="multipart/form-data".
  • 这是通过SSL发生的
  • 重定向不是与表单POST或托管在其上的URL不同的协议,主机或端口.
  • 当我使用Fiddler2检查HTTP流量时,问题消失并且IE表现出来.

Coz*_*ara 8

问题是3岁,但我最近遇到了这个问题,并没有在任何地方找到正确的答案.标记为已接受的答案并没有真正回答任何问题.

对我有所作为的是在302响应中添加以下标题:

 Connection: close
Run Code Online (Sandbox Code Playgroud)

我正在重定向到具有完整URL的另一个站点,看起来IE正试图通过在相同的TCP流上发送后续请求而不重新打开来优化连接,但是不够聪明,没有明确地弄清楚该站点是不同的标题中的"连接"指令.

这至少发生在IE10和IE11中,其他浏览器都没有这个问题.


小智 6

您是重定向到部分URL还是完整URL(包含主机,协议等)?我在PHP中看到了很多例子,其中302的重定向没有完整的http://server.dom/path/to/file,IE将被忽略或破坏.在Rails中,这可能是路由器中foo_path和foo_url之间的区别.