当前位置: 代码迷 >> CGI >> fastcgi程序返回响应景,代码中为什么不需要加http1.1 200 ok
  详细解决方案

fastcgi程序返回响应景,代码中为什么不需要加http1.1 200 ok

热度:1183   发布时间:2014-03-01 00:37:47.0
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的特点,共同的响应体不放在每次循环执行中。