c - 解析 HTTP header

标签 c http post header

我对用 C 构建一个小型、高效的 Web 服务器产生了新的兴趣,并且在从 HTTP header 解析 POST 方法时遇到了一些麻烦。关于如何处理从“已发布”数据中检索名称/值对,有没有人有任何建议?

POST /test HTTP/1.1
Host: test-domain.com:7017
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://test-domain.com:7017/index.html
Cookie: __utma=43166241.217413299.1220726314.1221171690.1221200181.16; __utmz=43166241.1220726314.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 25

field1=asfd&field2=a3f3f3
// ^-this

我看不出有什么具体的方法可以从整体上恢复底线并确保它每次都有效。我不喜欢硬编码任何东西。

最佳答案

您可以通过搜索 newline newline 或更具体的\r\n\r\n 来检索名称/值对(在此之后,消息正文将开始)。

然后您可以简单地用 & 拆分列表,然后在 = 之间拆分每个返回的字符串以获取名称/值对。

参见 HTTP 1.1 RFC .

关于c - 解析 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/79780/

相关文章:

php - 无法使用 Cake PHP 在 HTTP 响应中设置自定义状态代码消息

PHP 将 Base 64 数据解码为 jpeg 以在 Web 浏览器中查看

c - 为什么 malloc 钩子(Hook)对 pthreads 不安全?

c - 我怎样才能使这个 switch 语句起作用?另外,当他们输入 Q 时,如何让程序退出?

c - fork父子通信

c# - 从 http 调用中获得正确的响应,而不是异常

rest - BaseX REST API : Set custom HTTP response header

javascript - AJAX POST 请求被缓存

Node.js服务器: HTTP POST body is empty

c - ISO C 禁止在 C 中使用空的初始化大括号