Fastcgi 502 c++ when FCGX_GetParam Cookie

Fastcgi 502 c++ when FCGX_GetParam Cookie

本文关键字:GetParam Cookie FCGX when c++ Fastcgi      更新时间:2023-10-16

没有这一行,我的代码运行得很顺利。(我只是注释了这一行)

std::string cookie;
cookie = FCGX_GetParam("HTTP_COOKIE", request.envp);

当这行没有注释时,代码仍然与发送cookie的客户端顺利运行,但是当客户端没有cookie时,系统会出现故障。会有什么问题呢?即使我使用try {} catch (...) {},代码仍然崩溃,并将导致502的fastcgi。当代码崩溃

upstream prematurely closed connection while reading response header from upstream

这个错误信息被记录在nginx错误日志中。然后cgi不再工作,连接被拒绝。我需要重生它,让代码再次工作。

天哪!我想明白了。我回头看了看fastcgi文档

结果:值绑定到名称,如果名称不存在于环境envp中则为NULL。在此请求结束后,调用方不得更改结果或保留结果。

因为如果没有cookie,它将返回NULL,文档说它不能改变结果。所以这个问题可以解出来std:: string饼干;

if (FCGX_GetParam("HTTP_COOKIE", request.envp) != NULL){
   cookie = FCGX_GetParam("HTTP_COOKIE", request.envp);
}