FastCGI:检索请求头
FastCGI: retrieve the request headers
我目前正在开发一个Web C++应用程序,该应用程序使用带有Apache和mod_fcgid的FastCGI。
我正在尝试检索请求的标头,但我没有找到如何检索。经过一些研究,我认为标头在"FCGX_request"的属性"envp"中,但它包含环境变量,如:
REMOTE_ADDR: 192.168.0.50
SERVER_SOFTWARE: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.0f DAV/2 mod_fcgid/2.3.6
REDIRECT_UNIQUE_ID: TxytP38AAAEAABpcDskAAAAE
FCGI_ROLE: RESPONDER
HTTP_ACCEPT_LANGUAGE: fr
SERVER_SIGNATURE: <address>Apache/2.2.21 [etc.]
这些变量为我提供了有用的信息,但我需要真正的HTTP头,尤其是"Cookie"。我试图读取"FCGX_Request"的流"in",但它似乎是针对请求体(POST数据)的。由于我的应用程序是多线程的,所以我使用"FCGX_Accept_r()",如下所示:
while(true)
{
FCGX_Init();
FCGX_Request* fcgiRequest = new FCGX_Request;
FCGX_InitRequest(fcgiRequest, 0, 0);
if(FCGX_Accept_r(fcgiRequest) < 0)
break;
Request* request = new Request(fcgiRequest);
request->process();
}
但实际上,我不使用线程。请求一个接一个地执行。
如何获取请求标头?
谢谢。
尝试以下代码。它应该打印出整个环境,这样你就可以找到你要找的变量。
while(true)
{
FCGX_Init();
FCGX_Request* fcgiRequest = new FCGX_Request;
FCGX_InitRequest(fcgiRequest, 0, 0);
if(FCGX_Accept_r(fcgiRequest) < 0)
break;
char **env = fcgiRequest->envp;
while (*(++env))
puts(*env);
Request* request = new Request(fcgiRequest);
request->process();
}
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 使用VerQueryValue检索应用程序的文件描述
- 如何在boost beast http请求中设置http头
- 发送一个带有libcurl C++问题的帖子请求:s
- 在多个核心中处理一个HTTP请求
- 是否可以从格式字符串中检索"width"
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 错误:请求非类类型为"MULTIMEDIA_FILME [500]"的成员|
- 使用 Winsock2.h C++向不和谐 API 发送 HTTP 请求时出现问题
- 每个服务器请求的内存预算
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- 如何在Qt中从数据库中检索二进制数据?
- std::getline没有在while循环中重新请求用户输入
- 如何从C++代码中检索 QML 的文本字段中的文本?
- 从 opencv c++ 中的矢量中检索固定的帧数
- 通过HTTP请求从站点检索数据(使用QT5.4的C++)
- 如何通过串行端口发送请求从目录中检索数据
- 如何发送http请求并检索json响应C++Boost
- FastCGI:检索请求头
- 检索具有多个重叠 I/O 请求的缓冲区