Тестував HTTP-конвеєр за допомогою nc, але отримав лише одну відповідь


1

Я випробовую HTTP-конвеєрний апарат за допомогою nc,

Тому я створив вхідний файл, який містить такі рядки,

GET / HTTP/1.1
Host: localhost

GET / HTTP/1.1
Host: localhost

Тепер я надсилаю його з nc,

nc localhost 80 < test

Але я отримав лише одну відповідь HTTP, що з цим погано? І nc просто тут чогось чекає, він не повертається до консолі.

Відповіді:


2

Якщо ви хочете мати змогу надсилати кілька запитів за одне з'єднання, вам потрібно зберегти життя:

GET / HTTP/1.1
Host: localhost
Connection: keep-alive

На жаль, сервер не завжди повинен відповідати вашому запиту. Він може відповісти за допомогою Connection: closeабо Connection: keep-alive. Якщо він відповідає з попереднім, ви не можете передавати свої запити, і вам потрібно буде використовувати два з'єднання. Оскільки трубопроводи до Netcat не можуть приймати подібні рішення, ви можете просто залишитись на безпечній стороні та використовувати два з'єднання.


Вам не потрібно явного зберігання в режимі HTTP / 1.1.
АртемГр

0

Проблема може бути у вашому HTTP-сервері. Не кожен сервер підтримує конвеєрні роботи. Наприклад, Лівенвент не робить (і на цьому фіксується libevhtp ).

У мене немає проблем з nc та конвеєрним використанням сервера nginx HTTP:

$ echo -en "GET / HTTP/1.1\r\nHost: fropl.com\r\n\r\nGET / HTTP/1.1\r\nHost: fropl.com\r\n\r\n" | nc localhost 80
HTTP/1.1 401 Unauthorized
Server: nginx/1.2.1
Date: Sat, 08 Jun 2013 21:38:59 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
WWW-Authenticate: Basic realm="frople"

HTTP/1.1 401 Unauthorized
Server: nginx/1.2.1
Date: Sat, 08 Jun 2013 21:38:59 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
WWW-Authenticate: Basic realm="frople"

PS Ви можете використовувати telnet або Perl, якщо сумніваєтесь у nc.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.