如何使用C++应用程序从客户端请求中捕获HTTP和URL数据



我有一个CGI exe应用程序在IIS上运行。客户端(用于测试的localhost:8080(可以使用任何应用程序名称(例如home、store、account等(和任何附加查询(例如?test=1&magic=2(向服务器发出请求。目前,exe将加载并运行其中的代码,但无法通过POST或GET接收客户端输入。

有人建议我尝试使用WT和类似的库来捕获我需要的HTTP和URL信息,但我想学习在没有单独库的情况下做到这一点。

使用C++,我如何通过客户端GET和POST从客户端捕获HTTP请求数据、URL参数、cookie数据等,然后将这些数据存储在变量和常量中以备将来使用?

CGI应用程序作为一个单独的进程运行。它在stdin上接收客户端数据,并在stdout上向客户端发送数据。当Web服务器接收到客户端连接时,它会生成CGI进程,将连接的套接字连接到stdinstdout句柄。

因此,例如,如果客户端请求http://localhost:8080/home?test=1&magic=2,CGI的stdin应该接收类似以下的数据:

GET /home?test=1&magic=2 HTTP/1.1
Host: localhost:8080
Cookie: ...

然后它可以写入stdout,类似于这样的东西:

HTTP/1.1 200 OK
Content-Type: desired media type
Content-Length: XXXXX
Set-Cookie: ...
data here

这里有一个https服务器,你可以从src编译https://bitbucket.org/ptroen/crossplatformnetwork/src/master/OSI/Application/Stub/HTTPSServer/httpsserver.cc

这是我写的,表现很好。如果您不关心加密,请参阅http服务器。您需要定义两个轻量级类,以便使用特定的cgi-biz逻辑进行初始化。

它支持post-put-get-delete。尚未使用cookie进行过测试,但不会很难实现。

最新更新