downloadАтрибут HTML

downloadАтрибут HTML

Я пытаюсь просмотреть PDF-файл, найденный в Интернете.

Обычно, когда я пытаюсь открыть файл PDF, Firefox отображает его в своем просмотрщике PDF по умолчанию (называется pdfjs, если я правильно помню). Это нормальное и хорошее поведение.

Однако...
с этим конкретным Pdf, который я нашел в сети, я нажимаю ссылку на его местоположение, и Firefox открывает диалоговое окно загрузки. Он описывает файл как «двоичный файл», хотя файл является Pdf, который я могу загрузить и просмотреть нативно.

Я предполагаю, что веб-сервер — это «не говорить" Firefox, что этот файл PDF на самом деле является файлом PDF. Поэтому Firefox может только предположить, что это «двоичный файл».

          Это побудило меня задаться вопросом...

Если я когда-нибудь снова столкнусь с этой неприятностью, вместо того, чтобы скачать файл, могу ли ясилаFirefox открывает файл (онлайн или иным образом) в своей программе просмотра PDF по умолчанию?

Попытки решения:

  1. Я попробовал ответ отКак вручную вызвать встроенный в Firefox просмотрщик PDF-файлов (pdf.js)?, но безрезультатно. Firefox просто пытается загрузить «двоичный файл».
  2. Я добавил view-source:в начало местоположения PDF-файла (т. е. view-source:https://www.website.com/pdf.pdf), я просто получаю необработанный текст ASCII, отображаемый в PDF-файле.

PS: Я использую Firefox 48.0.2...
Да, он старый....


Как просили:

Скриншот заголовков ответа и запроса

решение1

Существует несколько способов, с помощью которых сайты могут заставить ваш браузер загрузить файл вместо того, чтобы открыть его напрямую:

downloadАтрибут HTML

Этот атрибут тега anchorпопытается заставить ваш браузер загрузить файл вместо того, чтобы обработать его обычным способом.

Обычно это используется, когда вам нужно взять автоматически сгенерированное название документа и представить его как что-то приятное для пользователя.

Использование:<a href="http://www.website.com/path/to/YourDocument.pdf" download="YourDocument.pdf">...

Я пока не нашел способа обойти эту проблему, но поскольку настоящая причина вашей проблемы кроется ниже, я не исследовал ее полностью...

HTTP-заголовки

Content-Disposition

Веб-сервер может ответить на запрос документа заголовком, Content-Dispositionописывающим, как браузер должен получить файл.

Content-Disposition: Attachmentсообщит браузеру, что ему следует загрузить файл, а не обрабатывать его, как обычно.

Content-Disposition: Inlineсообщит браузеру, что его можно отобразить внутри веб-страницы или как веб-страницу.

Вот дополнение для Firefox, которое берет Attachmentзаголовки и заменяет их Inlineзаголовками:

https://addons.mozilla.org/en-US/firefox/addon/bypass-forced-download/

Технически, он перехватывает Content-Disposition: attachmentзаголовки и перезаписывает их на лету в Content-Disposition: inline. Он также позволяет вам указать веб-сайты, которые должны и не должны использовать эту перезапись.

Как и в случае с большинством дополнений, ваш пробег может отличаться.

Content-Type

Веб-сервер может ответить на запрос документа заголовком, Content-Typeописывающим тип документа, который он возвращает браузеру.

Content-Type: application/octet-streamопределяется как «произвольные двоичные данные» и, по сути, может быть загружен только как файл, в противном случае браузер не будет знать, что с ним делать.

Это то, что вы видите, когда ваш браузер запрашивает PDF-файл, который вы пытаетесь просмотреть.

Content-Type: application/pdfэто то, что вам, вероятно, понадобится, если вы захотите просмотреть этот файл в своем браузере или, по крайней мере, заставить Firefox понять, что это за файл и как с ним правильно обращаться.

Вот дополнение для Firefox, которое можно настроить на прослушивание и перезапись Content-Typeзаголовков на основе их содержимого.

Примечание: Изменение способа обработки типов MIME в вашем браузере может быть опасным.

https://addons.mozilla.org/en-US/firefox/addon/content-type-fixer/

Опять же, этот аддон может работать или не работать во всех случаях.

Связанный контент