当FCGX_GetParam Cookie时,Fastcgi 502 c ++

时间:2015-05-28 08:06:54

标签: c++ cookies nginx fastcgi

我的代码没有这一行就顺利运行。(我只是评论这一行)

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不再工作,连接被拒绝。我需要重新生成它以使代码再次运行。

1 个答案:

答案 0 :(得分:0)

哦,天啊!我想到了。 我回头看看fastcgi doc。

结果:值绑定到name,如果环境envp中没有名称,则为NULL。调用者不得改变结果或在结束此请求后保留结果。

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

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