Я хочу создать простой HTTP-сервер с Bash & netcat, и у меня проблема с полным чтением POST-запросов - последняя строка всегда отсутствует.
Сервер запускается так:
netcat -l -p 8080 -e ./ncserver.sh
Значение ncserver.sh
, сведенное к минимуму, которое отображает проблему:
#!/bin/bash
while read INPUT; do
echo "Req line: $INPUT" >&2
done;
Я использую Postman для отправки запросов на сервер и ожидаю, что скрипт выдаст все данные запроса в stderr.Запрос представляет собой простой JSON:
{
name: "Eugene",
age: 34
}
Обновление: необработанные данные запроса почтальона:
POST /foo/bar HTTP/1.1
Host: localhost:8080
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 7f5a57a7-1664-e79c-2242-7ba6b638e260
{
name: "Eugene",
age: 34
}
В выводе сервера я получаю все заголовки и тело запроса, в котором отсутствует последняя строка}
.То же самое относится и к другим типам контента, таким как multipart/form-data
- последняя строка всегда отсутствует.
Примечание: если я добавлю пустую строку после JSON, я смогу увидеть }
в выводе терминала.
Я попытался использовать cat /dev/stdin
вместо read
, но получил No such device or address
.
Вопрос, вероятно, можно обобщить как как мне прочитать HTTP-запросы в правильной двоичной форме в Bash?