[英]Firefox / Chrome shows plain text from cgi script
我目前有一个运行Apache的内部网站。 它正在提供一些cgi脚本网页(perl代码)。 最近,在Firefox和Chrome中,它开始显示HTML代码的纯文本版本。 在Internet Explorer中,它将cgi文件呈现为HTML,但是在Chrome和Firefox中,其呈现为纯文本。
在perl代码中,我具有以下内容:
#!/usr/bin/perl --
#
#Prints the HTML MIME TYPE FOR WEB BROWSERS.
print "content-type: text/html\n\n";
print <<HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Statistics</title>
--- OUTPUT SNIPPED ---
HTML
使用用于Firefox的应用程序,我看到响应标头为text / plain而不是text / html。
我不确定它是否可能是Apache配置,或者其内容类型缺少什么。
这是一种解决方法,但似乎已解决了该问题:
在apache主机配置文件中,我添加了cgi-bin目录的行:
DefaultType text/html
“ C”必须在“内容文本”中大写
我使用bash
cgi脚本解决了这个问题:
echo -e -n "Content-type: text/html\n\n";
尝试添加完整的HTTP标头。 不只是
print "content-type: text/html\n\n";
尝试
print "HTTP/1.0 200 OK";
print "content-type: text/html\n\n";
请参阅相关问题: 为什么我需要显式输出IIS的HTTP标头,而不输出Apache?
并参考: http : //search.cpan.org/~lds/CGI.pm-3.42/CGI.pm#CREATING_A_STANDARD_HTTP_HEADER :
我刚遇到这个问题,解决方案是我的代码已从以下更改:
print """Content-Type: text/html\n\n
至:
print """
Content-Type: text/html\n\n
该代码已在选项卡中,并添加了额外的换行符。
我使用angel_007的方法进行故障排除。
我遇到了同样的问题。 我做了一些更改,它似乎很适合我。
在输入脚本为print content-type后做出第一条声明。 使用cgi方法“标头”打印内容类型,而不是硬编码。
我的$ cgi = CGI-> new; 打印$ cgi-> header('text / html');
我正在通过Firefox中的Live HTTP标头观察标头。 在此更改之前,一直都是文本/纯文本块。 进行此更改后,将其更改为text / html,并且成功了。
希望这也对您有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.