浏览器意外显示Content-Type响应头行的问题求助
浏览器意外显示Content-Type响应头行的问题求助
我最近在尝试搭建Apache的CGI环境,按照相关文档写了个极简的Perl脚本,结果遇到了奇怪的问题——浏览器居然把本该作为响应头的Content-Type行直接显示出来了,而不是只显示页面内容。
先说说我的脚本情况:我写的脚本叫first.pl,一开始是这样的:
#!/usr/bin/perl print "Content-Type: text/html; charset=utf-8\n\n"; print "Hello, World.";
后来朋友提醒我说\n的含义是系统相关的,HTTP要求的是CR-LF(也就是\r\n)分隔响应头和内容,我又改成了:
#!/usr/bin/perl print "Content-Type: text/html; charset=utf-8\r\n\r\n"; print "Hello, World.";
但两种写法的结果完全一样——当我在Chrome里访问localhost/~mylogin/first.pl时,页面显示的是:
Content-Type: text/html; charset=utf-8
Hello, World.
而文档里明确说应该只显示一行“Hello, World.”才对。我还试过把charset部分去掉,结果还是会显示Content-Type那一行,查了资料说加charset可能有用,但实际没区别。
再说说我做的配置(我用的是Mac Monterey 12.6.6):
- 从默认的
httpd.conf文件开始,我只做了这几个修改:- 取消注释了
LoadModule perl_module libexec/apache2/mod_perl.so - 取消注释了
LoadModule userdir_module libexec/apache2/mod_userdir.so - 取消注释了
Include /private/etc/apache2/extra/httpd-userdir.conf
- 取消注释了
- 在
/etc/apache2/extra/httpd-userdir.conf里,取消注释了Include /private/etc/apache2/users/*.conf - 我创建了
/etc/apache2/users/mylogin.conf,内容是:
<Directory "/Users/mylogin/Sites/"> AddLanguage en .en AddHandler perl-script .pl PerlHandler ModPerl::Registry Options Indexes MultiViews FollowSymLinks ExecCGI AllowOverride None Require host localhost </Directory>
- 执行了命令:
chmod +a "_www allow execute" ~ - 后来又按照Apache的说明,在
httpd.conf里加了这段配置:
<Directory "/Users/mylogin/Sites"> Options +ExecCGI AddHandler cgi-script .cgi </Directory>
我感觉这应该是某个基础配置出了问题,有没有大佬能给点建议呀?
备注:内容来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

