如何在fastcgi中传递一些自定义的cookie参数

How to pass some custom cookie parameters in fastcgi

我用 fcgi 和 C 写了一个服务器,我需要在打印一些字符串到 request.out 后添加一些客户参数。 要清楚这是我的示例代码:

while (1) 
{
    rc = FCGX_Accept_r(&request);
    if (rc < 0)
        break;
    FCGX_FPrintF(request.out,
        "Content-type: text/html\r\n"
        "\r\n");
    //the html page content
    FCGX_FPrintF(request.out,
        "<form method=\"post\" action=\"\">"
        "<input type=\"text\" name=\"num\">"
        "<input type=\"submit\" value=\"click\" name=\"submit\">"
        "</form>"       
        );
    .
    .
    .

    //and somewhere like here I need to add a cookie parameter
    FCGX_FPrintF(request.out,
    "set-cookie:myParam=myValue\r\n"
    "\r\n");
    .
    .
    .
    .
    FCGX_Finish_r(&request);
}

但这最终会直接打印到页面上。我怎样才能把它放到缓冲区的开头?

HTTP 协议具有以下请求和响应架构:

<header 1>\r\n
<header 2>\r\n
...
<header n>\r\n
\r\n
<body>

因此,您需要发送的任何 header 必须在分隔响应的 header 和 body 部分的空行之前发送。

在您的情况下,您需要在 Content-Type 之前或之后立即编写 set-cookie header,否则浏览器会将其解释为响应的一部分 body.另外,我建议遵循大小写约定:

FCGX_FPrintF(request.out,
    "Content-type: text/html\r\n"
    "Set-Cookie: myParam=myValue\r\n"
    "\r\n");