Apache AH01328 Слишком длинная строка Ошибка при попытке загрузить поврежденный файл - PullRequest
0 голосов
/ 02 июля 2019

Я получаю эту ошибку, используя Apache в качестве обратного прокси-сервера для моего сервера Apache Tomcat, всякий раз, когда я пытаюсь загрузить поврежденный PDF, ответ сервера пуст, и я получаю это в журналах Apache:

AH01328: Line too long, URI /uri/moreruri/docNum, referer: https://example.com/uri/moreruri/docNum

Я пытался получить ту же ошибку на моем локальном сервере (опять же с Apache и Apache Tomcat), и это не происходит.

Есть идеи, почему это могло произойти?Заранее спасибо.

1 Ответ

0 голосов
/ 03 июля 2019

Эта ошибка произошла из-за этой строки в файле конфигурации /conf/httpd.conf:

AddOutputFilterByType SUBSTITUTE application/pdf

Вот что пытается сделать Apache: всякий раз, когда выполняется GET и GET возвращает файл PDF, он пытается прочитать файл и заменить определенные строки текста.

Эти замены определены в этой строке:

Substitute "s|http://localhost:8081|https://example.com|in"

Когда apache получает GET и видит, что мы запрашиваем PDF-файл, он пытается прочитать и заменить эти строки, однако, поскольку файл поврежден, apache не может его прочитать.

Затем он выводит все содержимое PDF в одну строку внутри тела ответа, которая оказывается (в нашем конкретном случае) больше максимальной длины строки по умолчанию (измеряется в МБ).

Это приводит к обрезанию ответа, и в итоге мы получили пустой ответ.

У нас также была эта строка:

SubstituteMaxLineLength 5M

Он изменяет максимальную длину строки по умолчанию, однако наш файл весил 20 МБ, и здесь мы устанавливаем максимальную длину 5 МБ, таким образом, не охватывая этот конкретный случай.

Нашим решением проблемы было просто удалить первую строку, поскольку нам не нужно было изменять содержимое PDF:

AddOutputFilterByType SUBSTITUTE application/pdf

Однако вы можете изменить максимальную длину, используя эту строку:

SubstituteMaxLineLength LENGTH

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

...