У меня есть сервлет, который может возвращать содержимое text/html или application/pdf. Судя по всему, Internet Explorer (IE7) неправильно обрабатывает приложение/pdf.
Например. Выход сервлета A может возвращать html-контент:
[html-контент здесь]
И тогда Servlet Output B может вернуть содержимое PDF:
[содержимое в формате pdf здесь]
URL-адреса, связанные с этими выходными данными, являются одним и тем же URL-адресом сервлета: http://web/Servlet.
Читая онлайн, похоже, что IE может иметь ошибочный механизм и не доверять типу mimetype/content, установленному с сервера. В основном у меня возникла проблема в Internet Explorer, когда я вывожу PDF, но по какой-то причине IE возвращает тип содержимого к text/html, и я получаю пустую html-страницу.
Вот цитата по этому вопросу:
«Теперь есть еще одна ошибка, скрывающаяся даже там, где сервлет PDF исправлен, чтобы установить MIME-тип ответа как application/pdf. Если результаты не были найдены, тогда ответ отправил эту информацию обратно клиенту, используя HTML! Теперь из-за IE махинаций с типом MIME, ответ будет отображаться с использованием типа MIME text/html. Однако большинство других браузеров будут доверять типу MIME application/pdf, отправленному с сервера.
В 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
Хотя код тот же. Вот мой вопрос, как я могу избежать этой проблемы?