Я ищу инструмент командной строки, который прослушивает заданную часть, с радостью исключает каждый запрос HTTP POST и выводит его.
Я хочу использовать его для тестирования, то есть для тестирования клиентов, которые выдают запросы HTTP POST.
Это означает , что я ищу коллегу к curl -F
(который я могу использовать для отправки теста HTTP сообщений на сервер HTTP).
Возможно, что-то вроде socat TCP4-LISTEN:80,fork,bind=127.0.0.1 ...
- но socat недостаточно, потому что он не говорит по HTTP.
http
http-logging
maxschlepzig
источник
источник
netcat
(nc
в некоторых системах) с опциями-l
(listen) и-p
(number port).nc
для частичного тестирования - но я вижу следующие недостатки: 1) он не отправляет код состояния HTTP 2) я должен нажать Ctrl + D после того, как я вижу запрос на закрытие соединения 3) он не знает как реагировать на заголовок «Expect: 100-continue» 4) он не знает, как обрабатывать заголовок «Transfer-Encoding: chunked» - он, вероятно, просто отображает первый (вероятно) пустой блокОтветы:
Простые основные инструменты командной строки, такие как
nc
,socat
кажется, не в состоянии обрабатывать конкретные происходящие HTTP-компоненты (чанки, кодировки передачи и т. Д.). В результате это может привести к неожиданному поведению по сравнению с общением с реальным веб-сервером. Итак, моя первая мысль - поделиться самым быстрым из известных мне способов настройки крошечного веб-сервера и заставить его делать то, что вы хотите: выводить весь вывод.Самое короткое, что я мог придумать, используя Python Tornado :
Замените
pprint
строку, чтобы вывести только нужные вам поля, напримерself.request.body
илиself.request.headers
. В приведенном выше примере он прослушивает порт 8080 на всех интерфейсах.Альтернативы этому много. web.py , бутылка и т. д.
(Я довольно ориентирован на Python, извините)
Если вам не нравится способ вывода, просто запустите его и попробуйте
tcpdump
так:чтобы увидеть настоящий необработанный дамп всех запросов HTTP-POST. Или просто запустите Wireshark.
источник
pprint.pprint(self.request.body)
. Обратите внимание,self.request.body
а неself.body
. То же самое дляself.request.headers
. См tornado.readthedocs.org/en/latest/...Я тоже искал это и наткнулся на http-echo-сервер Node.js :
Он принимает все запросы и выводит полный запрос, включая заголовок, в командную строку.
источник