
У меня есть веб-страница со ссылкой на PDF-файл ( target="_blank"
). Если я нажимаю на ссылку, PDF-ридер просто показывает серый экран в браузере Firefox.
Если я скопирую эту ссылку и вручную открою ее в новой вкладке, PDF-файл отобразится правильно, а последующие запросы, сделанные путем нажатия на исходную ссылку, теперь будут работать, что позволяет предположить, что проблема возникает при загрузке файла в кэш.
Похоже, что плагин Adobe PDF Reader отправляет запросы на диапазон байтов (я вижу много ответов со значением 206), и я подозреваю, что это может быть причиной проблемы.
Я использую веб-сервер Apache. У кого-нибудь были проблемы с запросами Apache и Adobe byte-range? Есть ли обходные пути? Возможно, есть способ настроить Apache на игнорирование запросов byte-range в PDF-файлах?
решение1
Вопрос о том, как отключить запросы, был задан и дан ответ в списке рассылки httpd:
Как отключить Accept-Ranges?
Исходные серверы, которые принимают запросы на диапазон байтов, МОГУТ отправлять
Accept-Ranges: bytes Servers that do not accept any kind of range request for a resource MAY send Accept-Ranges: none
Если вы не найдете более прямого пути, вы всегда можете использовать mod_headers для удаления или изменения заголовков ответа.
-> см. документацию Apache для mod_headers, чтобы узнать, как установить заголовок Accept-Ranges в значение none
http://mail-archives.apache.org/mod_mbox/httpd-users/200912.mbox/%[email protected]%3E
решение2
Эта проблема иногда приводила к возникновению ошибки 109 в Acrobat Reader при просмотре PDF-файла.
Чтобы отключить запросы байтового диапазона через файл htaccess:
# Disable Byte-range for PDF files
<Files *.pdf>
Header set Accept-Ranges none
</Files>
решение3
У вас Squid сидит посередине? Это распространенная проблема с плагином Adobe - он пытается загрузить конец PDF (TOC), Squid начинает загрузку всего файла, Adobe отключается и выдает пустую страницу.
Вместо этого научитесь использовать команду «щелкните правой кнопкой мыши и сохраните как» — PDF-файл не является веб-документом и не должен просматриваться в браузере.