POST (вопрос знатокам хардкорного HTTP)
Пытаюсь из браузера отправить запрос POST, как-то так
<form method="post" action="http://localhost:1234/update.txt"> <textarea name="t7"></textarea> <input type="submit"> </form> Локально запускаю программу, которая слушает указанный порт. Заполняю в браузере поле и нажимаю submit. Браузер коннектится к указанному порту и отправляет ЗАГОЛОВОК запроса. В заголовке ничего странного, в т.ч. есть Content-Length с неким ненулевым числом. Но самого контента нет, т.е. после пустой строки в конце заголовка принимающая программа не получает ничего. Проверил на трех разных браузерах, то же самое. Что я не так понимаю про HTTP, конктретно про POST? |
Ну, тут 2 варианта: либо у вас все браузеры сломаны и отправляют только заголовки без полезной нагрузки, либо у вас сервер неправильно обрабатывает запросы post.
Возможно ожидает payload, как 'multipart/form-data', а браузер по умолчанию отправляет в 'application/x-www-form-urlencoded'. В первое с трудом верится. |
1. Три разных браузера (edge, iron portable и лисица). Трудно представить что все три сломаны.
2. Сервер ничего не обрабатывает, т.е. можно сказать что сервера нет. Есть простая программа. которая принимает входящее TCP соединение и показывает все, что по нему получает. Ничего не обрабатывает, вообще о запросе POST, его формате и разных encoding понятия не имеет. А получает программа только заголовок, пустую строку в конце, и все Код:
POST /update.txt HTTP/1.1 |
Когда вместо простой программы запрос получает штатный сервер, то все выглядит ОК. Вот пример: http://dkirusfe.bget.ru/test_post_request.html
Код: Код:
<?php |
Вопрос снимаю.
Как выяснилось, читающей программе нужно было указать опцию BINARY иначе она прекращала принимать данные увидев пустую строку |
Часовой пояс GMT +3, время: 20:18. |