我知道在问这里之前我应该尝试很多,但我的问题是。很难获得 fcgi 文档的结构化参考。所以我希望你不要对我投太多反对票,即使是在自学方面有一点缺乏。
我正在尝试找到一种方法来存档请求客户端的 IP。
我猜(如果我理解正确的话)我可以通过 FCGX_stream 句柄请求连接的 HTTP 标头。但如果有的话,我更喜欢一种更简单的方法。
我的第一次尝试是检查第一个 fcgi 教程中提供的
getenv
,但我按照此处所述进行了尝试:
https://stackoverflow.com/a/4107212/2003898
它编译得很好,但在第一次请求时我的 fcgi 应用程序崩溃了。 (但无论如何它都不能解决我的问题,因为我发现 get env 只是请求我的,所以主机的,env 的)
我也在尝试与
*FCGX_GetParam(const char *name, FCGX_ParamArray envp);
功能。但要么我太笨了,要么它只是提供我的本地环境,而不是 POST 端的环境。
因此,如果有人可以告诉我如何访问这些数据(最好不从 HTTP 标头中提取)或如何使用
FCGX_GetParam
来访问它,
我会很感激。
编辑:
#include "fcgi_stdio.h"
#include <stdlib.h>
int main()
{
int count = 0;
while(FCGI_Accept() >= 0)
{
for (count = 0; environ[count] != NULL; count++)
{
printf("%s\n", environ[i]);
}
}
return 0;
}
使用
getenv("REMOTE_ADDR")
远程 IP 地址无论如何都不包含在 HTTP 标头中