[HTTP 1.1 POST парсер] CRLF или CRLFCRLF
От: Kowak  
Дата: 26.05.05 14:55
Оценка:
Вопрос по разбору ПОСТ запросов. Руководствуясь RFC 2616 (Hypertext Transfer Protocol -- HTTP/1.1), как я понял, между POST-заголовком и телом ДОЛЖНО быть CRLFCRLF (тобишь дабл перевод на новую строку). Почему тогда при использовании .NET генерит запрос с одним CRLF после заголовка?
Re: пример
От: Kowak  
Дата: 26.05.05 15:15
Оценка:
пример как должно быть (наверное

"POST http://host.ru:80 HTTP/1.1

BLA-BLA-BLA"

пример как есть
"POST http://host.ru:80 HTTP/1.1
BLA-BLA-BLA"
Re[2]: пример
От: Gst2 Украина  
Дата: 30.05.05 08:50
Оценка:
Здравствуйте, Kowak, Вы писали:

K>пример как должно быть (наверное


K>"POST http://host.ru:80 HTTP/1.1


K>BLA-BLA-BLA"


K>пример как есть

K>"POST http://host.ru:80 HTTP/1.1
K>BLA-BLA-BLA"


RCF 2616:
" generic-message = start-line
*(message-header CRLF)
CRLF
[ message-body ]
"

Пустая строка (двойной CRLF) идет не после начальной строки (start line, заголовка), а перед телом сообщения (message body). После start line могут (и скорее всего они там есть) идти хедеры (message headers). Я так думаю, что K>BLA-BLA-BLA — это и есть хедеры.
То есть, чтобы добраться до тела, нужно пропарсить хедеры, попутно выяснив размер тела (см. RFC 2616, 4.4 Message Length).

P.S. Нужно не забывать при парсинге, что некоторые сервера и клиенты вместо CRLF могут использовать просто LF (или даже CR)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.