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

时间:2013-03-27 10:22:59

标签: c http module cgi

我用C& C编写的CGI模块。对于某些情况,我想从此模块返回HTTP错误400。问题是 - 我不知道如何从模块返回HTTP错误。

看起来像' return(-1)'在我的模块中,返回500内部服务器错误。我已经尝试过返回400等但是静脉。我甚至试过" printf("状态:400");"在返回-1之前(如此处所建议的那样:How to return a 500 HTTP status from a C++ CGI program)但这并没有奏效。

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

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

2 个答案:

答案 0 :(得分:3)

要将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

答案 1 :(得分:0)

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

#include <stdio.h>

int main()
{
    printf("status: 400\n\n");

    return 0;
}

只需要status: status-code\n\n