Большинство браузеров делают несколько HTTP-запросов при отображении PDF из браузера

большинство (т. е. FF, Safari, Chrome, Opera) делают несколько HTTP-запросов для файла PDF при отображении PDF в браузере? Я работаю над проблемой интеграции с программным обеспечением Webtrends Web Analytics, и статистика вокруг PDF-файлов кажется неправильной. Поддержка сказала мне, что, поскольку WebTrends анализирует журналы доступа к веб-серверам для определения трафика, загрузок и т. д. он имеет трудное время определения точных загрузок PDF, потому что:
Когда пользователь нажимает на PDF и PDF открывается в браузере пользователя через плагин браузера Acrobat Reader каждая страница загружается по одной за раз-это делается для экономии пропускной способности, если пользователь просматривает только первые 2 страницы 50-страничного PDF, загружаются только первые 2 страницы.

Это звучит подозрительно для меня (как можно сделать HTTP-запрос, чтобы обслуживать только часть двоичного файла?) ... Я искал в Google, но не нашел ничего, что говорит это.

Я попытаюсь найти некоторое программное обеспечение IE, которое позволяет я нюхаю HTTP-трафик завтра, чтобы увидеть, могу ли я наблюдать это явление.

любая информация/мысли приветствуется.

4 ответов


Если ваш сайт возвращает заголовок ответа HTTP следующим образом:

Accept-Ranges: bytes

программа чтения PDF закроет внутреннее соединение после прочтения всего нескольких КБ документа. Затем он запрашивает разделы документа по мере необходимости с заголовком запроса диапазона, например:

Range: bytes=242107-244329, 8060-76128

пример url, который делает это http://www.ovationguitars.com/img/OVmanual.pdf .

Если вы не вернете заголовок Accept-Ranges, документ PDF будет быть загружены в одном запросе (например,http://manuals.info.apple.com/en/iphone_user_guide.pdf )

вы можете увидеть поведение читателя PDF в IE с помощью этому httpwatch.

** отказ от ответственности: Этот ответ был отправлен Simtec Limited, создателями HttpWatch**


для меня по состоянию на июнь 2016 года Firefox и IE11 делают только один звонок.

Chrome делает два вызова, если нет Content-Disposition заголовок. Когда он отсутствует, Chrome делает два, кажется, отменяет второй и показывает PDF в браузере. Сервер не знает, что второй отменяется, и отправляет PDF снова.

когда этот заголовок отправляется с сервера, Chrome делает только один вызов и запускает или сохраняет файл.

Content-Disposition: attachment

(вы также можете предложить имя файла, которое будет использоваться при сохранении файла пользователем...)

Content-Disposition: attachment; filename=test.pdf

мои мысли в том, что вы на месте: ваш плагин не может (и не должен) разделить PDF-файлы на запросы.

У меня есть веб-приложение, которое обслуживает PDF-файлы из запроса (один запрос) и отображается в плагине. Он отображает весь PDF без получения дополнительной информации.

кроме того, если вы ищете http-сниффер, вы можете попробовать Саша. Я нашел это полезным во время отладки веб-сайта.


в моих тестах двойные запросы к PDF-файлу происходят в Chrome, Если у меня включено расширение Rest Console 4.0.2. Отключение этого расширения делает работу Chrome ожидаемой (только один запрос).

Edit: расширение Instapaper включено также делает Chrome делать двойные запросы в PDF.