我有一个CGI脚本,可以在stdout上打印以下内容:
print "Status: 302 Redirect\n";
print "Server: Apache-Coyote/1.1\n";
print "Location: $redirect\n";
print "Content-Length: 0\n";
print "Date: $date\n\n";
$ redirect和$ date是合理的值。 Apache2实际发送的内容还包括Content-Type:标头(text / plain)。我在服务器配置文件中注释掉了DefaultType。
我正在尝试调试在没有发送Content-Type:标头时出现的下游问题。那么我必须执行什么神奇的咒语来阻止 Apache2添加内容类型标题?
答案 0 :(得分:3)
根据我(不可否认的简短)读取server / protocol.c和server / core.c,你不能。
如果该标头不存在,它始终默认为DefaultType(默认为text / plain)。
答案 1 :(得分:2)
即使我们通过“Header unset Content-Type”指令从请求中删除Content-Type标头,apache也会从请求结构的另一个字段重新生成Content-Type标头。因此,我们首先强制将其他字段强制为保留值,以防止标头重新生成,然后通过“Header unset”指令删除Content-Type。
对于apache2.2:
Header set Content-Type none
Header unset Content-Type
对于apache2.4:
Header set Content-Type ""
Header unset Content-Type
答案 2 :(得分:1)
RemoveType将停止使用资源发送内容类型。
附录
<Files defaulttypenone.txt>
DefaultType None
</Files>
<Files removetype.txt>
RemoveType .txt
</Files>
<Files forcetype.txt>
ForceType None
</Files>
在我自己的服务器上测试过,这三个解决方案都没有用。他们都返回了text / plain。
答案 3 :(得分:1)
如果你要做的就是准备一个非常具体的测试用例服务器端,你总是可以通过在文本文件中预先烘焙输出并让netcat监听某个端口上的连接来“欺骗”。
当我想要100%确定服务器发送的每个字节时,我会使用该技巧。
答案 4 :(得分:0)
您可以尝试使用该指令:
ResponseHeader unset Content-Type
答案 5 :(得分:0)