У меня есть сервлет, который может возвращать текстовый / html или application / pdf контент. Похоже, что Internet Explorer (IE7) неправильно обрабатывает приложение / pdf.
Например. Выход сервлета A может возвращать html-контент:
[html контент здесь]
И затем выходной сигнал сервлета 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
Хотя код тот же.
Вот мой вопрос, как мне избежать этой проблемы?