我正在写一个C CGI程序
对于GET请求,我假设所有信息都以某种方式存储在getenv()中。我的问题是,这个数组看起来像是来自网络服务器的最基本的CGI请求。有两个参数,例如username =和password =。
对于POST请求,我不确定。我读过这些东西是在标准输入上处理的。通过标准输入(来自网络服务器)传递给CGI程序的这些行是什么样的?
指向一个冗长的RFC是无益的。
任何书?我特别感兴趣的是该协议的低级细节。我已经知道如何使用帮助程序库编写CGI应用程序...我只需要知道这些帮助程序库的语义。
答案 0 :(得分:3)
envp
不是标准的(好吧,不管怎样,不是ISO C或C ++标准,虽然POSIX可能有一些东西)。
但是,envp
与argv
的格式基本相同,除非它没有控件argc
来限制它。
每个envp[x]
的格式为"key=value"
,其中key
是环境变量名称,value
是其值,令人惊讶的是: - )
您应该按顺序处理元素,直到获得NULL指针,如:
#include <stdio.h>
int main (int argc, char *argv[], char *envp[]) {
int i = 0;
while (envp[i] != NULL)
printf ("[%s]\n", envp[i++]);
return 0;
}
Wikipedia entry for CGI提供了更多详细信息,希望不会像啰嗦的RFC那样淹没你太多的信息。
复制相关内容以使此答案自成一体:
除了这个细节之外,你可能会 来查看RFC,我担心。在Google上搜索RFC3875应该找到它。
具体来说,对于POST
,环境变量包含在请求的第一个空白行(引入消息正文的那一行)之前。他们有以下形式:
Content-Type: application/wonderful_app_by_pax
Content-Length: 314159
其中键不区分大小写,值后跟冒号。