Расширение Chrome: как распознать и отобразить PDF в новой вкладке вместо загрузки с указанными c заголовками - PullRequest
0 голосов
/ 09 июля 2020

Я разработал расширение, которое отменяет загрузку файла PDF и открывает файл на новой вкладке, но оно работает только при выполнении трех условий:

  1. Когда вы знаете абсолютный путь к файлу PDF по chrome.downloads.onCreated API
  2. Когда content-disposition: attachment обнаружен на chrome.webRequest.onHeadersReceived слушателе
  3. Когда content-type: application/pdf обнаружен на chrome.webRequest.onHeadersReceived слушателе

Но это не Не работают на этом сайте (демо):

Вы можете go на страницу (не пугайтесь, если вы увидите, что это на русском языке) и попробуйте загрузить первый PDF или вместо этого просто go, чтобы загрузить файл по этому URL-адресу: https://minzdrav.sakha.gov.ru/files/front/download/id/1381567

Вы увидите, что заголовки ответа:

access-control-allow-origin: *
cache-control: must-revalidate
content-description: File Transfer
content-disposition: attachment; filename="img-701190411.pdf"
content-length: 322722
content-transfer-encoding: binary
content-type: application/octet-stream
date: Thu, 09 Jul 2020 03:37:43 GMT
expires: 0
pragma: public
server: nginx
set-cookie: isloggedin=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; domain=sakha.gov.ru
status: 200

И это конкретно * Запрос 1055 * соответствует только одному из моих условий:

  • content-disposition: attachment означает «скачать файл». Его значение должно быть изменено на inline, чтобы предотвратить загрузку файла.

  • content-type: application/octet-stream, вероятно, означает «скачать как поток без указания типа файла». Но я не знаю, как распознать, является ли это файл PDF или нет

  • ❌ оба downloadItem.url и downloadItem.finalUrl в chrome.downloads.onCreated.addListener(downloadItem => {}) слушателе не содержат абсолютного пути для PDF файл. Как получить абсолютный путь?

Вопрос

Как определить, является ли это файл PDf, и открыть файл на новой вкладке вместо загрузки на веб-сайте упомянуто выше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...