1

我有一个用 C & 编写的 CGI 模块,在某些情况下我想从这个模块返回 HTTP 错误 400。问题是 - 我不知道如何从模块返回 HTTP 错误。

看起来像我模块中的'return(-1)',返回 500 内部服务器错误。我试过退还 400 等,但有条不紊。我什至试过 "printf("Status:400");" 在返回 -1 之前(如此处所建议:如何从 C++ CGI 程序返回 500 HTTP 状态 ),但这不起作用。

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

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

4

2 回答 2

4

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

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

参考:https ://www.rfc-editor.org/rfc/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
于 2013-05-06T19:36:20.340 回答
-1

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

#include <stdio.h>

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

    return 0;
}

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

于 2018-02-17T02:45:56.183 回答