从CGI C模块返回http错误代码

我有一个用C语言编写的CGI模块,对于某些条件我想从这个模块返回HTTP错误400。 问题是 – 我不知道如何从模块返回HTTP错误。

看起来像我的模块中的’return(-1)’,返回500内部服务器错误。 我已经尝试过返回400等但是静脉。 我甚至试过“printf(”状态:400“);” 在返回-1之前(如此处所示: 如何从C ++ CGI程序返回500 HTTP状态 )但这不起作用。

对此有任何建议将不胜感激。

编辑:[已解决]我能够从python模块返回HTTP错误代码(稍后由此C CGI模块调用)。 所以没有尝试下面评论中提到的建议。 谢谢你提供帮助。

要将HTTP错误400返回给HTTP客户端,您必须将HTTP状态行写入stdout,如下所示:

 printf("Status: 400 Bad Request\n"); 

参考: https : //tools.ietf.org/html/rfc3875

Status头字段包含一个3位整数结果代码,表示脚本尝试处理请求的成功程度。

  Status = "Status:" status-code SP reason-phrase NL status-code = "200" | "302" | "400" | "501" | extension-code extension-code = 3digit reason-phrase = *TEXT 

要从CGI脚本返回HTTP错误代码,必须将其写入stdout ,例如:

 #include  int main() { printf("status: 400\n\n"); return 0; } 

只需要status: status-code\n\n是必要的。