您好,我是一名大学生,而且我正在做一个在浏览器上写的服务器。我使用的是C语言。
我必须在浏览器上写一些消息,我能够打印" HTTP / 1.1 200 OK"但是当我尝试打印" HTTP / 1.1 200 OK"浏览器窗口中没有任何内容。我不工作。
我必须在这里做一些令人困惑的事情。我在这个网站上搜索了答案,我看到有些人建议使用" HTTP / 1.1 200 OK \ r \ n"这也行不通。
我在缓冲区中有这个句子,我直接在连接浏览器的套接字中用函数write写这个。
write(newsockfd, aux_buffer, tamanho)
答案 0 :(得分:1)
大多数Web应用程序不直接编写HTTP,而是使用某种处理HTTP通信的框架。但是,如果您确实对直接编写HTTP感兴趣,则应首先了解HTTP的工作原理。例如,最小的HTTP响应可能如下所示:
HTTP/1.1 200 OK
Content-Type: text/html
<html><head><title>Hello World</title></head><h1>Hello World</h1></html>
这里值得注意的是HTTP状态行和HTTP标头。 HTTP状态行和HTTP标头由浏览器处理,通常不向用户显示; Content-Type标头告诉浏览器响应主体是MIME text / html(不是text / plain或application / xml或image / jpeg或...),因此浏览器应该使用其HTML呈现引擎来显示正文。 HTTP Specfication (RFC 2616)定义了许多与内容协商,身份验证,编码,缓存,到期,重定向,代理等相关的HTTP标头。标题字段后跟两个换行符,标记字段字段的结尾和响应正文的开头。
请注意,为了严格遵守HTTP规范,分隔标题的换行必须是\ r \ n(CR + LF),尽管HTTP规范建议(但不要求)HTTP代理也应该识别其他换行样式。此外,HTTP标头只能包含可打印的US-ASCII字符,如果使用RFC 2047进行编码,则只能包含其他字符集中的字符。关于换行样式和US-ASCII编码的规则仅适用于HTTP标头,响应主体可以自由使用其他换行样式和编码。