Здравствуйте, MaxGl, Вы писали:
MG>Здравствуйте, crawler, Вы писали:
C>>Добрый день,
C>>что не нравится браузеру ... MG>А что браузер пишет?
Может тут проблема?
RFC2616
Transfer-Encoding MUST be used to indicate any transfer-codings applied by an application to ensure safe and proper transfer of the message. Transfer-Encoding is a property of the message, not of the
entity, and thus MAY be added or removed by any application along the request/response chain. (However, section 3.6 places restrictions on when certain transfer-codings may be used.)
The rules for when a message-body is allowed in a message differ for requests and responses.
The presence of a message-body in a request is signaled by the inclusion of a Content-Length or Transfer-Encoding header field in the request's message-headers. A message-body MUST NOT be included in a request if the specification of the request method (section 5.1.1) does not allow sending an entity-body in requests. A server SHOULD read and forward a message-body on any request; if the request method does not include defined semantics for an entity-body, then the message-body SHOULD be ignored when handling the request.
Здравствуйте, MaxGl, Вы писали:
MG>Здравствуйте, crawler, Вы писали:
C>>char* response = "HTTP/1.1 200 OK \r\n Content-Type:text/html \r\n\r\n <HTML>\n<BODY>\nHallo\n</BODY>\n</HTML> \r\n"; C>> ret = send(sock,response,DEFAULT_BUFFER,0);
MG> А чему равно DEFAULT_BUFFER?
MG>В данном случае надо так: MG>
Здравствуйте, crawler, Вы писали:
C>Не поверишь я со вчерашней ночи по всякому пробовал
C>char* response = "HTTP/1.1 200 OK \r\n Content-Type:text/html Content-Length:200 \r\n\r\n <HTML>\n<BODY>\nHallo\n</BODY>\n</HTML> \r\n"; C>ret = send(sock,response,strlen(response)+1,0);
Кхэ-кхэ . Это что за самодеятельность?
When a Content-Length is given in a message where a message-body is
allowed, its field value MUST exactly match the number of OCTETs in
the message-body. HTTP/1.1 user agents MUST notify the user when an
invalid length is received and detected.
C>Боюсь что здесь ошибка в чем-то другом ...
Почитай внимательно RFC2616: раздел 4.3 Message Body и раздел 4.4 Message Length C>может CR LF последовательность не \r\n а как-то по другому должна быть ?
Тут все правильно у тебя.
Здравствуйте, crawler, Вы писали: C>char* response = "HTTP/1.1 200 OK \r\n Content-Type:text/html Content-Length:200 \r\n\r\n <HTML>\n<BODY>\nHallo\n</BODY>\n</HTML> \r\n";
Я сразу не заметил...
RFC2616
Из чего следует, что каждый хэдэр должен находится своей строке. У тебя два хэдэра в одной строке получились.
C>Не поверишь я со вчерашней ночи по всякому пробовал
Спать по ночам надо
MG>Из чего следует, что каждый хэдэр должен находится своей строке. У тебя два хэдэра в одной строке получились.
C>>Не поверишь я со вчерашней ночи по всякому пробовал MG>Спать по ночам надо
Спасибо за помощь щас попробую внимательно вчитаться
C>что не нравится браузеру ...
C>Подскажите пожалуйста в чем может быть ошибка или где можно прочитать...
лишние символы пробела в начале второй строки заголовка (возможно еще там где разделитель заголовка от содержания ответа)
как я помню, наличие пробела в начале строки говорит что это не новая строка хидера, а продолжение предыдущей, просто перевод в следующую строку
ну и еще проблема которую уже озвучили, надо send(sock,response,strlen(response),0);