繁体   English   中英

Firefox / Chrome显示来自CGI脚本的纯文本

[英]Firefox / Chrome shows plain text from cgi script

我目前有一个运行Apache的内部网站。 它正在提供一些cgi脚本网页(perl代码)。 最近,在Firefox和Chrome中,它开始显示HT​​ML代码的纯文本版本。 在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM