如何在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");
我用 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");