【问题标题】:Firefox / Chrome shows plain text from cgi scriptFirefox / Chrome 显示来自 cgi 脚本的纯文本
【发布时间】:2010-09-15 18:13:07
【问题描述】:

我目前有一个运行 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 配置,或者内容类型是否缺少某些内容。

【问题讨论】:

  • header一般大写,即Content-Type: text/html
  • 您提到这发生在“最近”,您还记得在这之前您所做的更改吗?
  • 网站代码是通过subversion签入的,最近一次修改大概是两周前。
  • 我尝试将 Content-Type 大写,但没有帮助。还尝试了 content-type: text/html; charset=utf-8 也没有运气。

标签: html apache firefox google-chrome cgi


【解决方案1】:

这是一种解决方法,但似乎已经解决了问题:

在 apache 主机配置文件中,我为 cgi-bin 目录添加了这一行:

DefaultType text/html

【讨论】:

    【解决方案2】:

    我使用bash cgi 脚本解决了这个问题:

    echo -e -n  "Content-type: text/html\n\n";
    

    【讨论】:

      【解决方案3】:

      尝试添加完整的 HTTP 标头。而不仅仅是

      print "content-type: text/html\n\n";
      

      试试

      print "HTTP/1.0 200 OK";
      print "content-type: text/html\n\n";
      

      查看相关问题:Why do I need to explicitly output the HTTP header for IIS but not Apache?

      和参考:http://search.cpan.org/~lds/CGI.pm-3.42/CGI.pm#CREATING_A_STANDARD_HTTP_HEADER:

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题。我做了一些更改,似乎对我有用。

        作为打印内容类型输入脚本后的第一条语句。 使用 cgi 方法 'header' 打印内容类型而不是硬编码。

        我的 $cgi = CGI->new; 打印 $cgi->header('text/html');

        我通过 Firefox 中的 Live HTTP 标头观察标头。在此更改之前,它一直是文本/纯块。在此更改之后,它更改为 text/html 并且成功了。

        希望这也适用于您。

        【讨论】:

          【解决方案5】:

          “Content-text”中的“C”需要大写

          【讨论】:

            【解决方案6】:

            我刚遇到这个问题,解决方案是我的代码已从:

            print """Content-Type: text/html\n\n
            

            到:

                print """
                Content-Type: text/html\n\n
            

            代码已被标记并添加了一个额外的换行符。
            我使用angel_007's method 进行故障排除。

            【讨论】:

              猜你喜欢
              • 2014-09-18
              • 2016-03-17
              • 2018-10-15
              • 2012-06-20
              • 2022-10-05
              • 1970-01-01
              • 2013-01-25
              • 2013-12-31
              • 1970-01-01
              相关资源
              最近更新 更多