【发布时间】:2011-08-04 20:29:04
【问题描述】:
我有一个包含几个字段的表单。当您提交表单时,服务器会以重定向 (HTTP 302) 进行响应。
提交表单时,如果有<input type=file>字段,IE不跟随重定向,而是报错:“Internet Explorer无法显示网页”。
如果有 no <input type=file> 字段,那么它确实会按照预期进行重定向。
HTTP 302 响应在两种情况下完全相同相同,只是响应的时间戳不同。
我在 IE8 和 IE9 中遇到了这种情况。 (我没有尝试过较低的版本)。 Firefox、Chrome、Opera 和 Safari 都按预期遵循重定向。
注意事项:
- 表单具有属性
enctype="multipart/form-data"。 - 这是通过 SSL 发生的
- 重定向到的协议、主机或端口与表单发布到或托管的 URL 不同。
- 当我使用 Fiddler2 检查 HTTP 流量时,问题消失并且 IE 正常运行。
【问题讨论】:
-
奇数。 302 重定向会导致浏览器在目标页面上发出 GET,这会丢失上传的文件(如果有)。也许 IE 的错误表明了这一点(而 IE 总是有蹩脚的错误消息)。不过,没有解释为什么 Fiddler 会“修复”问题。
-
@Marc,在服务器上它是一个 Rails 应用程序。它接受请求,将文件和内容保存在数据库中,然后响应重定向到另一个页面。它应该向这个新页面发出 GET 请求,但事实并非如此。
标签: internet-explorer http http-headers