Отправляется ли запрос POST по нескольким фрагментам? - PullRequest
0 голосов
/ 20 июня 2020

Я делал несколько nodejs и столкнулся со сценарием, в котором мне пришлось использовать запросы POST. Я видел, что узел обрабатывает запросы POST несколько иначе, чем запросы GET. В случае запросов POST нам нужно создать два прослушивателя событий on('data', ...) и on('end', ...). В случае запросов GET я не обнаружил такой сложности. Все это привело меня к мысли, что, возможно, запросы GET всегда гарантированно отправляются в пределах одного блока данных от клиента. Принимая во внимание, что запросы POST могут быть отправлены несколькими блоками. Я прав, или в моем понимании есть изъян. Пожалуйста, поправьте меня, если так.

1 Ответ

0 голосов
/ 20 июня 2020

GET-запросы обычно не имеют «тела» как часть, поэтому, как только вы прочитали заголовки HTTP-запроса, у вас есть все, поэтому нет необходимости в дополнительном коде, чтобы читать больше.

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

К вашему сведению, TCP - это протокол потоковой передачи, что означает, что нет никаких гарантий относительно в каких порциях будут поступать данные. Даже сами заголовки могут приходить в виде нескольких пакетов. Но библиотека http, которую вы используете, уже позаботится об этом за вас. Он читает данные до тех пор, пока не соберет все заголовки. Чтение тела POST-запроса больше зависит от вас, если вы не используете какое-то промежуточное программное обеспечение для парсера тела, которое будет читать тело за вас.

...