CGI POST方法不起作用
CGI POST method is not working
我正在尝试运行我的第一个C++CGI应用程序。我使用Ubuntu 14.04和Apache 2.4.7。GET方法运行良好,问题是当我尝试从html表单执行POST方法时,浏览器没有得到响应。日志文件如下所示:
apache2/access.log
【2015年2月25日:10:30:05+0100】"POST/cgi-bin/cgi-test.cgi HTTP/1.1"200 0"-"Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/40.2214.115 Safari/537.36"
apache2/error.log
〔2月25日星期三10:30:05.884648 2015〕〔cgid:error〕〔pid 1158:tid 139962890278656〕(104)对等方重置连接:〔client 127.0.0.1:54871〕AH02550:无法将CGI输出刷新到客户端
POST表单代码:
<form action="http://localhost/cgi-bin/cgi-test.cgi" method="post">
Test image: <input type="text" name="test"> <br />
<input type="submit" value="Submit" />
</form>
GET表单代码:
<form action="http://localhost/cgi-bin/cgi-test.cgi" method="get">
Test image: <input type="text" name="test"> <br />
<input type="submit" value="Submit" />
</form>
和C++代码:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
int main()
{
std::cout << "Content-type: text/plainnn";
char* get_query_data = getenv("QUERY_STRING");
int l_result = -1;
char* lenstr = getenv("CONTENT_LENGTH");
if ( lenstr != NULL )
{
l_result = atoi(lenstr);
}
std::cout << "Post read length: " << l_result <<std::endl;
}
有人知道出了什么问题吗?
我在没有读取传入的所有POST数据时遇到过这种情况。Apache重复使用相同的缓冲区向CGI脚本发送数据和从CGI脚本接收数据。因此,当Apache读取您发送回的响应时
("内容类型:text/plain\n\n后读长度:"),
POST数据的一部分仍在缓冲区中
("内容类型:text/plane\n\n读取后长度测试=asdfjwkeqwersk598rsdf")。
Apache检测到响应格式错误,因此无法刷新输出并关闭连接。
总之,从std::cin中读取所有POST数据。
我从未发现上面的代码崩溃的原因,但我最终使用GNU Cgicc库实现了POST方法。
- C++ assigment std::list:<typename>:itrator 在 main 中工作,但在方法中它不起作用
- 转发声明在命名空间中不起作用的替代方法
- 基本加密和解密方法不起作用 C++ 11.
- 结构/方法不起作用
- 指向类中函数方法的指针不起作用
- C++ 互斥锁可以交叉方法/变量吗?如果是这样,为什么在这里不起作用?
- 将字符数组设置为彼此相等的方法不起作用
- ConvertToReferencePoint 方法不起作用,获取作业参数的 NULL (HyperV 2016)
- 为什么方法不起作用?
- C boost :: bimap insert()方法不起作用
- 为什么我的将向量保存到文件然后再次读出的方法不起作用?
- 为什么这种交换方法不起作用
- 当应用于静态方法时,为什么constexpr属性不起作用
- Qt. 方法显示文本() 如果我在 QStyledItemDelegate 中定义了 paint() 方法不起作用
- 返回值上的 C++ 方法链接不起作用
- 为什么这个逻辑在我的主循环上有效,但在方法上不起作用
- 如何调用孩子的方法:虚拟关键字不起作用
- StringStream的Str方法将不起作用.(不同类型的串联)(C )
- 非递归二进制树插入()方法不起作用
- C++中的Friend方法不起作用