嗨,我是一名大学生,我正在做一个在浏览器上编写的服务器。我用的是C语言。
我必须在浏览器上写一些消息,我能够打印“HTTP/1.1 200 OK”,但是当我尝试打印“HTTP/1.1 200 OK”时,浏览器窗口中没有出现任何内容。我没工作。
我一定是在这里做了一些令人困惑的事情。我在这个网站上搜索答案,我看到有些人建议使用“HTTP/1.1 200 OK\r\n”,但这也不起作用。
我将这句话放在缓冲区中,然后使用 write 函数将其直接写入连接到浏览器的套接字中。
write(newsockfd, aux_buffer, tamanho)
最佳答案
大多数 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 header 。 HTTP 状态行和 HTTP header 由浏览器处理,通常不会向用户显示; Content-Type header 告诉浏览器响应正文是 MIME text/html(不是 text/plain 或 application/xml 或 image/jpeg 或...),因此浏览器应使用其 HTML 渲染引擎来显示正文。 HTTP Specfication (RFC 2616) 定义了许多 HTTP header 与内容协商、身份验证、编码、缓存、过期、重定向、代理等相关。 header 字段后面跟着两个换行符,这标志着 header 字段的结束和响应正文的开始。
请注意,为了严格符合 HTTP 规范,分隔 header 的换行符必须为\r\n (CR+LF),尽管 HTTP 规范建议(但不要求)HTTP 代理也应该识别其他换行符样式。此外,HTTP header 必须仅包含可打印的 US-ASCII 字符,并且如果使用 RFC 2047 编码,则只能包含其他字符集中的字符。 。此关于换行样式和 US-ASCII 编码的规则仅适用于 HTTP header ,响应正文可以自由使用其他换行样式和编码。
关于c - HTTP/1.1 200 OK 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23664983/