http对GET请求的响应 - 在FF而不是Chromium中工作

时间:2010-04-02 21:17:00

标签: c http network-programming

为了好玩,我正在尝试用C编写一个非常简单的服务器。

当我send对Firefox的这个回复时,它打印出身体“hello,world”,但是使用Chromium它给了我一个Error 100 (net::ERR_CONNECTION_CLOSED): Unknown error.

我相信这是相关的代码:

char *response = "HTTP/1.0 200 OK\r\nVary: Accept-Encoding, Accept-Language\r\nConnection: Close\r\nContent-Type: text/plain\r\nContent-Length:20\r\n\r\nhello, world";
    if(send(new_fd, response, strlen(response), 0) == strlen(response)) {
        printf("sent\n");   
    };

    close(new_fd);

我错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

Content-Length似乎是12,而不是20。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4

  

当在允许消息正文的消息中给出Content-Length时,其字段值必须与消息正文中的OCTET数完全匹配。 HTTP / 1.1用户代理必须在收到并检测到无效长度时通知用户

这是不是意味着FF违反了规范? (好吧,你使用的是HTTP / 1.0,所以可能没有。)