fastcgi程序返回响应时,代码中为什么不需要加http1.1 200 ok
项目中用到fastcgi编写了上传、下载服务。
当fastcgi应用程序处理完毕后,要返回响应给浏览器时,不知为什么fastcgi返回流中,要是按照http协议来写的话,apache就会报错。
部分代码如下所示:
FCGX_FPrintF(request.out,
/*"HTTP/1.1 200 OK;\n"*/
"Accept-Ranges: bytes;\n"
"Content-Type: text/plain;\n"
"Content-Disposition: attachment; filename=\"%s\";charset=gb2312;\n"
"Content-Length: %d\n\n"
, rDownHandle.strFileName.c_str(), unSizeLeft);
如上代码所示,只要加上HTTP/1.1 200 OK后,apache就会报错:aborted: error parsing headers: malformed header 'HTTP/1.1 200 OK',
注释掉以后,就可以正常输出了。那么是apache和fastcgi两者,究竟是谁给默认加上了这句了呢?
对于返回200 ok的,我可以一律注释掉这个返回码,但是如果我要返回其它错误码给浏览器时,该怎么处理呢? 比如返回 HTTP/1.1 206 Partial Content 该怎么写?或者该如何设置配置文件等?
[解决办法]
为什么不需要加那一行,这正是fcgi的特点,共同的响应体不放在每次循环执行中。