Я разработал расширение, которое отменяет загрузку файла PDF и открывает файл на новой вкладке, но оно работает только при выполнении трех условий:
- Когда вы знаете абсолютный путь к файлу PDF по
chrome.downloads.onCreated
API - Когда
content-disposition: attachment
обнаружен на chrome.webRequest.onHeadersReceived
слушателе - Когда
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, и открыть файл на новой вкладке вместо загрузки на веб-сайте упомянуто выше?