2010-04-02 27 views
1

为了好玩,我想在CHTTP响应GET请求 - 在FF工作不铬

写了一个非常简单的服务器当我send这种反应到Firefox它打印出人体“你好,世界”但铬它给了我一个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); 

我缺少什么?

谢谢!

+0

请将正确答案标记为Accepted。 – 2010-04-02 21:31:42

+0

@Steven你必须等15分钟 – Tyler 2010-04-02 21:32:36

+0

啊,我明白了。感谢您的解释。 – 2010-04-03 01:57:44

回答

2

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

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

当内容长度是在消息正文被允许一个消息中给出,其字段值必须完全匹配消息体中的OCTET数量。当接收到并检测到无效长度时,HTTP/1.1用户代理必须通知用户

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

+0

这对我来说非常愚蠢。我认为只要它足够大,内容长度就不重要了。谢谢。 – Tyler 2010-04-02 21:30:12

+0

刚刚在FF中使用HTTP/1.1进行检查,确实允许错误的消息长度。 – Tyler 2010-04-02 21:41:13