c - HTTP/1.1 200 OK 不起作用?

标签 c http

嗨,我是一名大学生,我正在做一个在浏览器上编写的服务器。我用的是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/

相关文章:

c - fprintf覆盖C中的其他数据

c - UTF-8 解码器在处理非 ASCII 字符时失败

c# - 在 C# 中创建简单的嵌入式 http 和 https 应用程序

c# - 如何使用 C# 应用程序向 Firefox 扩展发送消息?

C 循环未中断

c - 数据库事务和线程

c - 线程参数打印垃圾值

web-services - HTTP 响应 header - 应用程序版本

c# - 从 HttpListener 解析 POST 参数

c++ - C++中的HTTP Post Response解析