Я разрабатываю простой сервлет, который должен обслуживать документы через http. Я использую URL в виде / getDocument? FileId = 1234. Сервлет просто 1) устанавливает response.contentType и 2) записывает в response.outputStream.
Проблема заключается в правильной настройке типа контента, чтобы браузеры понимали ответ (т.е. отображали документ с использованием правильного приложения). В частности:
a) Для файлов PDF, если я установил тип содержимого «application / pdf», Internet Explorer понимает (немедленно отображает документ), а Firefox - нет (отображает пустую страницу без попытки открыть плагин для просмотра PDF). Если я установлю «application / x-octetstream», Firefox поймет это (правильно отобразит), но Internet Explorer скажет «неизвестный тип файла», когда попросит меня сохранить или открыть его.
b) Firefox понимает «application / msword» и «application / vnd.ms-excel», но Internet Explorer, как ни странно, не понимает, просто говорит «неизвестный тип файла».
Возможно ли, чтобы это работало согласованно во всех браузерах, и если да, то как правильно настроить тип содержимого для различных типов документов? Что-нибудь еще, что должно быть установлено в ответе, чтобы это работало правильно? Или, как я подозреваю, браузеры запутываются, когда URL не заканчивается соответствующим расширением имени файла? (т.е. getFile? fileId = 1234 вместо, например, getFile / test.pdf)