#javascript #pdf #content-security-policy #pdf.js
#javascript #PDF #content-security-policy #pdf.js
Вопрос:
Приложение MVC c #. Я использую CSP с этим форматом:
<meta http-equiv="Content-Security-Policy" content="
default-src 'self';
script-src 'self' https://mozilla.github.io/pdf.js/build/pdf.js https://mozilla.github.io/pdf.js/build/pdf.worker.js;
style-src 'self' https://meyerweb.com/eric/tools/css/reset/reset.css;
object-src 'self';
base-uri 'self';
connect-src 'self';
font-src 'self';
frame-src 'self';
img-src 'self';
manifest-src 'self';
media-src 'self';
worker-src blob:;"/>
В проекте я использую pdf.js для PDF-файлов base64. Я вижу свои документы, но я не вижу панель кнопок из pdf.js .
Моя консоль браузера показывает:
и моя функция javascript использует:
var DivContenedorPDF = document.createElement("div");
DivContenedorPDF.id = "pdf-viewer";
var pdfData = atob(b64);
var pdfjsLib = window['pdfjs-dist/build/pdf'];
pdfjsLib.GlobalWorkerOptions.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.js';....
Я попытался добавить blob: в default-src, используя local pdf.js (это не имеет ошибок, но не работает)…
дополнительная информация:
- api.js является частью pdf.js webpack.
- Мой тест находится в стадии подготовки (в localhost консоль выдает 0 ошибок).
- У меня нет CSS для pdf.js панель кнопок.
заранее спасибо!
Ответ №1:
Попробуйте добавить blob: в script-src.
Комментарии:
1. все еще не работает с тем же сообщением об ошибке в консоли.
Ответ №2:
В консоли вашего браузера отображается CSP:
default-src https: data: 'unsafe-inline' *.google.com
это отличается от того, что вы показали в мета-теге:
default-src 'self'; ...
Похоже, на самом деле вы выпускаете политику безопасности контента в другом месте, чем вы думаете (и редактируете).
большой двоичный объект worker-src: в мета-теге вполне достаточно, чтобы разрешить создание worker из blob-URL.
Комментарии:
1. привет, @granty. Консоль использует общее сообщение об ошибке. Я объявляю один раз во всем своем коде.
2. Предупреждения консоли всегда основаны на реальном CSP. Блокировка политики, указанная в предупреждении консоли, каким-то образом попадает в браузер. Пожалуйста, проверьте наличие дубликатов
<meta csp>
в HTML-коде и проверьте в инструментах разработчика браузера, что на странице нет HTTP-заголовка CSP
Ответ №3:
@granty дал мне ответ: сообщение в консоли не является общим. Я не знаю почему, но мой IIS использовал другую конфигурацию CSP. Мой код работает, удаляя конфигурацию в разделе заголовка ответа IIS.