You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言Socket HTTP服务器解析带查询参数的GET请求的正确格式

标准GET请求的HTTP格式说明

特殊字符的排布规则

  • 所有行(请求行、每一条请求头行)的行尾固定为\r\n(回车+换行组合),制表符\t不会出现在行尾的结构分界位置,仅可作为请求头值内的空白分隔符使用
  • 全部请求头结束后,会额外跟一个单独的\r\n构成空行,用来标记请求头部分结束,GET请求没有请求体,到这个空行就结束了

带查询字符串的完整请求格式示例

你给出的截断示例对应的标准转义格式如下(补齐了完整的Accept头和结束空行):

GET /add?title=gedit&price=87 HTTP/1.1\r\n
Host: localhost\r\n
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
\r\n

如果写成C语言里的字符串常量,格式为:

const char *sample_get_request = "GET /add?title=gedit&price=87 HTTP/1.1\r\nHost: localhost\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n\r\n";

解析注意事项

  • 解析时优先以\r\n作为行分隔符逐行拆分内容
  • 第一行拆分出三个字段:请求方法、请求路径(路径中?后面的部分就是查询字符串)、HTTP版本
  • 后续每行按第一个:拆分出请求头的键和值,遇到连续的\r\n(即空行)就终止头解析
  • 遇到\t时可以和普通空格同等处理,作为空白字符忽略或者用来分割值内的参数即可

内容的提问来源于stack exchange,提问作者user786

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:27:04