我正在尝试编写一个处理 GET、POST、HEAD 请求的小型 c++ 网络服务器。我的问题是我不知道如何解析标头、消息正文等。它正在侦听套接字,我什至可以将内容写到浏览器中就好了,但我很好奇我应该如何在 C++ 中做到这一点。
Afaik 一个标准的 GET/POST 请求应该是这样的:
GET /index HTTP/1.1
Host: 192.168.0.199:80
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
this is the message body
所有行都以 '\r\n' 结尾。
我是否应该在 '\n' 处拆分请求并修剪它们(如果是这样的话)?另外如何处理帖子数据中的文件?
我想要实现的主要目标是获取包含标题键=> 值对的向量、带有请求方法的字符串、发布数据(如在 PHP 中,如果存在)和查询字符串(例如 /index)作为字符串或由“/”分割的向量。
谢谢!