Apache не отправляет последний чанк нулевой длины в чанкованном ответе на CGI-запрос HTTP post - PullRequest
0 голосов
/ 13 октября 2019

Я думаю, что это ошибка Apache. Я нашел это:

https://grokbase.com/t/apache/bugs/108ht7t086/do-not-reply-bug-49767-new-no-last-chunk-0-after-post-request-on-cgi-script

https://bz.apache.org/bugzilla/show_bug.cgi?id=49766

https://bz.apache.org/bugzilla/show_bug.cgi?id=49767

Я отправил запрос HTTP POST в этот сценарий CGI bash:

#!/bin/bash

echo -e -n "Content-type: text/plain\n\n"

echo hello world!

Что может быть более невинным? Я был шокирован, увидев, что Апач отвечает частями! И это еще не все: ответ даже ошибочен! Последний кусок нулевой длины отсутствует. Есть только один кусок.

Возвращаются следующие заголовки:

HTTP/1.1 200 OK
Date: Sun, 13 Oct 2019 12:19:23 GMT
Server: Apache
Upgrade: h2,h2c
Connection: Upgrade, Keep-Alive
Keep-Alive: timeout=5, max=100
Transfer-Encoding: chunked
Content-Type: text/plain

Не исправлена ​​ли эта ошибка? Согласно сообщениям об ошибках выше, «решение» (обходной путь) состоит в том, чтобы прочитать все опубликованные данные, прежде чем выводить что-либо. Когда я сделал это:

#!/bin/bash

echo -e -n "Content-type: text/plain\n\n"

input=$(cat)
echo hello world!

, последний фрагмент нулевой длины присутствует;). Это как-то предполагаемое поведение или это ошибка? Почему они не исправят это? Нужно ли читать ВСЕ входные данные, чтобы избежать ошибки или? Кто-нибудь здесь с дополнительной информацией об этой проблеме?

...