return http error code from CGI C module

。_饼干妹妹 提交于 2019-12-11 08:48:15

问题


I've a CGI module written in C & for some condition I want to return HTTP error 400 from this module. The problem is - I don't know how to return HTTP error from the module.

Looks like the 'return(-1)' in my module, returns the 500 internal server error. I've tried returning 400 etc. but in vein. I've even tried "printf("Status:400");" before returning -1 (as suggested here: How to return a 500 HTTP status from a C++ CGI program ) but that didn't work.

Any advice on this would be appreciated.

Edit: [solved] I was able to return HTTP error code from the python module (which is called later by this C CGI module). So didn't get to try the suggestion mentioned in comments below. Thanks for offering help, though.


回答1:


To return HTTP error 400 to the HTTP client, you have to write the HTTP status line to stdout, like this:

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

Ref: https://tools.ietf.org/html/rfc3875

The Status header field contains a 3-digit integer result code that indicates the level of success of the script's attempt to handle the request.

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



回答2:


To return HTTP error code from your CGI script, you have to write it into stdout, such as:

#include <stdio.h>

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

    return 0;
}

Just the status: status-code\n\n is necessary.



来源:https://stackoverflow.com/questions/15656514/return-http-error-code-from-cgi-c-module

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!