c/c++语言开发共享FastCGI:检索请求标头

我目前正在使用FastCGI与Apache和mod_fcgid一起开发Web C ++应用程序。

我正在尝试检索请求的标头,但我没有找到如何执行此操作。 经过一些研究,我认为标题位于“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: 
Apache/2.2.21 [etc.]

这些变量为我提供了有用的信息,但我需要真正的HTTP头,特别是“Cookie”。 我试图读取“FCGX_Request”的“in”流,但似乎是请求体(POST数据)。 由于我的应用程序是multithreading的,我使用“FCGX_Accept_r()”,如下所示:

 while(true) { FCGX_Init(); FCGX_Request* fcgiRequest = new FCGX_Request; FCGX_InitRequest(fcgiRequest, 0, 0); if(FCGX_Accept_r(fcgiRequest) 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(); } 

      以上就是c/c++开发分享FastCGI:检索请求标头相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/562587.html

      (0)
      上一篇 2021年2月5日
      下一篇 2021年2月5日

      精彩推荐