2016-09-22 4 views
0

Каковы правила получения запроса HTTP 1.1? Я попытался рассмотреть несколько источников информации, но я никогда не могу прийти к окончательному результату. В частности, мне интересно выяснить, как обращаться с телом запроса POST. В настоящее время я создаю свой собственный веб-сервис, который не использует PHP или ASP.net. Мой веб-сайт в настоящее время обрабатывает запросы на получение и заголовок POST отлично, но никогда не получает данные тела из клиентского/веб-браузера, поэтому я хочу узнать, существуют ли какие-либо специальные правила для приема тела POST.Получение запроса HTTP POST

Надеется, что вы можете помочь

Спасибо, Mitchell

+0

'В настоящее время я создаю свой собственный веб-сервис, который не использует PHP или ASP.net' Что он использует :) –

+0

В настоящее время используется C# и используется прослушиватель и потоки TCP. Его для школьного проекта и моих ресурсов ограничены ... –

+0

Почему вы не используете [HttpListener] (https://msdn.microsoft.com/en-us/library/system.net.httplistener (v = vs.110)) .aspx), например. –

ответ

1

Есть не какие-либо специальные правила обращения с POST, за исключением того, что отправитель должен предоставить его вам в формате, который вы находитесь ожидая. В частности, вы можете отключиться, если запрос POST поступит в формате, не помещенном в заголовок «ACCEPT» запроса. Я не уверен, как вы это делаете, но это самый распространенный фол, с которым я столкнулся. Пример ACCEPTs - текстовый/обычный, текст/json и т. Д. Вы можете немного почитать это на https://en.wikipedia.org/wiki/List_of_HTTP_header_fields, который перейдет через общий набор. Не забывайте, что у вас есть возможность реализовать свои собственные, если вы действительно этого хотите, что отлично подходит для таких вещей, как ключи API (хотя использование стандартного стандарта считается лучшей практикой).

Аналогичным образом, вы можете столкнуться с ограничениями на использование Cross-Origin Request. CORS запретит клиенту получать запросы из другого домена, как правило, для защиты пользователя от очень плохих вещей (TM), которые могут произойти.

Хотя, это преимущество использования PHP и ASP.NET, многие странности, которые идут вместе с HTTP-запросами, обрабатываются для вас языком (PHP) или каркасом (ASP.NET), и я может говорить о том, что ASP.NET является отличным привратником искаженных запросов.

+0

СПАСИБО !!! Я использую сетевой поток C# для получения заголовка и тела. Подождите немного, прежде чем я приму ответ, но у этого есть: P –

1

Я наткнулся на этот вопрос, так как я тоже не смог получить тело HTML POST. В моем случае, я хотел бы получить файл из формы, как это:

<form action="http://localhost:8000/" method="post" enctype="multipart/form-data"> 
    <input type="file" /> 
    <input type="submit" value="OK" /> 
</form> 

Для целей отладки, я начал

nc -l localhost 8000 

для приема и отображения запроса, как описано в What does enctype='multipart/form-data' mean?.

Наблюдатель может заметить, что в поле ввода type="file" отсутствует атрибут name. В результате, браузеры я использовал, а именно

  • Mozilla Firefox 53,0
  • Google Chrome 58.0.3029.96

, молча не включают в себя данные файла в теле запроса POST. Поле Content-Length отражает это. Но netcat на принимающей стороне, конечно, не разбирает поле. В результате обе стороны просто закрывают соединение.

Примечание: Этот вопрос представляется подходящим для моих результатов. @ Другой вопрос Митчелл-Нурси Web Browser not sending Body of POST request until cancel of request выглядит как «частично заполненный буфер, который не читается после отключения» -error.

Смежные вопросы