Java Servlet Mimetype和Internet Explorer mimetype处理错误

时间:2009-11-09 22:08:39

标签: java internet-explorer servlets mime-types

我有一个可以返回text / html或application / pdf内容的servlet。显然,看起来Internet Explorer(IE7)无法正确处理application / pdf。

例如。 Servlet输出A可能返回html内容:

[html content here]

然后Servlet输出B可能会返回PDF内容:

[pdf content here]

与这些输出关联的URL与Servlet URL相同:http://web/Servlet

在线阅读,看起来IE可能有一个错误的机制,并且不信任从服务器设置的mimetype / content类型。主要是,我在Internet Explorer下遇到问题,我输出PDF但由于某种原因,IE将内容类型恢复为text / html,我得到一个空白的html页面。

以下是该问题的引用:

“现在还有另一个bug,即使修复了PDF servlet,将响应的MIME类型设置为application / pdf。如果没有找到结果,则响应使用HTML将此信息发送回客户端!现在由于IE的MIME类型shenanigans,响应将使用text / html MIME类型显示。但是大多数其他浏览器将信任从服务器发送的application / pdf MIME类型“

在具有相同Servlet的Firefox中,我没有遇到这个问题。

在java代码中,我基本上设置了这些响应头值:

Expires=0
Cache-Control=max-age=1, must-revalidate, no-cache, post-check=0, pre-check=0
Pragma=public
Content-Disposition=inline; filename=filename_1257804404940.pdf
Content-Length=457834
Connection=Keep-Alive
Content-Type=application/pdf
Content-Language=en-US

以上是firefox的输出。在IE下,我可能会得到:

Content-Length=0
Connection=Keep-Alive
Content-Type=text/html
Content-Language=en-US

即使代码是相同的。 这是我的问题,我该如何避免这个问题?

1 个答案:

答案 0 :(得分:3)

我们在工作中遇到过类似的问题。您可以通过在您要访问的URL中包含具有适当扩展名的文件名来扭曲浏览器的手臂。

如果你有一个HTML服务servlet和一个执行PDF的服务,这显然没有问题;只需将不同的网址映射到它们。

如果在运行时确定类型,则可以通过默认为HTML来解决问题,并在需要时将带有元重定向的文档返回到PDF URL。