Pdf.js: Отказался получать небезопасный заголовок «Accept-Range» с URL-адресами Amazon.

Созданный на 24 апр. 2013  ·  18Комментарии  ·  Источник: mozilla/pdf.js

Я пытаюсь использовать pdf.js с запросами диапазона (прогрессивная загрузка pdf-документа), но когда я пытаюсь загрузить pdf-файлы с URL-адресов amazon s3, в консоли появляется эта ошибка:
Отказался получать небезопасный заголовок "Accept-Ranges"

и pdf загружается не через частичное содержимое 206 (запросы диапазона), а 200 и после завершения загрузки pdf просматривается в средстве просмотра.

это пример URL-адреса pdf:
https://kotob.s3.amazonaws.com/book.pdf?Signature=irgVfoAZuPPIp5kpCesni2MzpLo%3D&Expires=1366576877&AWSAccessKeyId=AKIAILBHXSTPUIBTRMSA

любая помощь

Самый полезный комментарий

Я смог воспроизвести проблему на локальном сервере. Я заставил его работать, когда сервер, на котором размещен удаленный PDF-файл, возвращает следующие заголовки HTTP:

Access-Control-Allow-Headers: Range
Access-Control-Expose-Headers: Accept-Ranges, Content-Encoding, Content-Length, Content-Range

Все 18 Комментарий

Вы видите это с помощью viewer.html или расширения Firefox?

с помощью viewer.html

Я чувствую, что это не удается, потому что вы делаете запрос из разных источников.

Если у вас Chrome, проверьте, работает ли это:

Запустите Chrome с --disable-web-security (http://stackoverflow.com/questions/3102819/chrome-disable-same-origin-policy). При загрузке файла также добавьте #disableWorker=true .

Закрытие. Пожалуйста, снова откройте, если это все еще проблема.

Спасибо @mduan за ваш ответ,
но та же ошибка все еще появляется у меня, и чтобы лучше объяснить это, я помещаю средство просмотра в дропбокс, и это общедоступные ссылки, которые вы можете попробовать:
https://dl.dropboxusercontent.com/u/37262502/PDF.js_mduan/pdf.js/web/viewer.html
этот просмотрщик выдает ошибку:
error

но когда я изменил путь pdf с
DEFAULT_URL=' https://kotob.s3.amazonaws.com/neo.pdf '
к :
DEFAULT_URL='нео.pdf'
поместив файл в тот же каталог средства просмотра, он отлично работает с запросами диапазона:

https://dl.dropboxusercontent.com/u/37262502/PDF.js_mduan/pdf.js/web/viewer2.html
и обратите внимание, что мы делаем политику CORS доступной из любого другого источника для запросов на получение.
Я надеюсь, что это может помочь в объяснении проблемы.
и я прошу прощения за мой поздний ответ,

любая помощь ?

Я смог воспроизвести проблему на локальном сервере. Я заставил его работать, когда сервер, на котором размещен удаленный PDF-файл, возвращает следующие заголовки HTTP:

Access-Control-Allow-Headers: Range
Access-Control-Expose-Headers: Accept-Ranges, Content-Encoding, Content-Length, Content-Range

спасибо @mduan за вашу помощь, теперь это работает.

@mahmoudfelfel : не могли бы вы закрыть эту проблему, если ваша проблема решена? Спасибо! :)

Прокси-файл на языке сценариев (PHP, RoR, Python или другом) — очень простое решение.

Я наткнулся на ту же ошибку. И на мой взгляд это можно/нужно исправить внутри pdf.js.

При загрузке pdf с другого домена, то наш. Предварительные запросы являются обязательными не только для AWS, но и для документов Mozilla , это рекомендуется для каждого запроса CORS.

Тогда вы можете избежать дополнительного экземпляра прокси или чего-то подобного. В качестве быстрого обходного пути я попытаюсь получить запрос pdf (с предварительной проверкой) для себя и просто передать ByteArray в pdf.js.

При загрузке pdf с другого домена, то наш. Предварительные запросы являются обязательными не только для AWS, но и для документов Mozilla, это рекомендуется для каждого запроса CORS.

Запросы предварительной проверки CORS генерируются XHR автоматически без вмешательства пользователя JS.

В качестве быстрого обходного пути я попытаюсь получить запрос pdf (с предварительной проверкой) для себя и просто передать ByteArray в pdf.js.

Звучит как идеальный обходной путь: все нестандартные средства связи (кроме простого HTTP/HTTPS без необходимости CORS) должны обрабатываться пользователем. Если вы уверены, что XHR сможет получить ваш URL-адрес (файл, большой двоичный объект, с CORS, с заголовком аутентификации и т. д.), настройте его правильно.

Закрытие как не исправит.

Я застрял с v0.8.180 , и я знаю, что это старая проблема, хотя, если это поможет кому-то еще, следующая конфигурация CORS корзины S3 исправила ее для меня:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
        <ExposeHeader>Accept-Ranges</ExposeHeader>
        <ExposeHeader>Content-Range</ExposeHeader>
        <ExposeHeader>Content-Encoding</ExposeHeader>
        <ExposeHeader>Content-Length</ExposeHeader>
    </CORSRule>
</CORSConfiguration>

@jpillora Я пробовал ту же конфигурацию в нашей конфигурации CORS корзины S3. Приложение работает во всех браузерах, а в FireFox ошибок нет. Webkit (Chrome/Safari) по-прежнему выбрасывает Refused to get unsafe header "Accept-Ranges" .

Я заметил, что Accept-Ranges: bytes присутствует в http-запросе pdf-файла, но я не вижу, чтобы Content-Range или Content-Encoding сохранялись из конфигурации в http-запросе.

Может быть, ему нужно выставить Range в дополнение к Content-Range?

Я дал ему выстрел без везения. Решил поковыряться в этом вопросе.

Рабочую конфигурацию CORS можно найти здесь: https://github.com/mozilla/pdf.js/issues/4530#issuecomment -188059771.

Ключом к выполнению этой работы является «диапазон» Access-Control-Allow-Headers.

В моем случае, кроме потокового аудиоконтента, эти заголовки все равно не работали.

@simoncpu спасибо за ваши выводы!
У меня очень похожая проблема, но для аудиоконтента. В моем случае эти заголовки не будут работать кстати

{ 'Content-Length': 5751405,
  'Content-Type': 'audio/mpeg',
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Methods': 'POST, GET, OPTIONS',
  'Access-Control-Allow-Headers': 'Range',
  Expires: 0,
  Pragma: 'no-cache',
  'Cache-Control': 'no-cache, no-store, must-revalidate',
  'Accept-Ranges': 'bytes',
  'Content-Range': 'bytes 120429-240237/5751405' }

спросил на SF , а также.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

aaronshaf picture aaronshaf  ·  3Комментарии

smit-modi picture smit-modi  ·  3Комментарии

anggikolo11 picture anggikolo11  ·  3Комментарии

patelsumit5192 picture patelsumit5192  ·  3Комментарии

kleins05 picture kleins05  ·  3Комментарии