Firefox / Chrome показывает простой текст из скрипта cgi - PullRequest
1 голос
/ 15 сентября 2010

В настоящее время у меня есть внутренний веб-сайт, на котором работает 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 или что-то не хватает для типа контента.

Ответы [ 6 ]

1 голос
/ 17 сентября 2010

Это был обходной путь, но, похоже, он устранил проблему:

В файле конфигурации хоста apache я добавил строку для каталога cgi-bin:

DefaultType text/html
0 голосов
/ 27 сентября 2016

Я только что столкнулся с этой проблемой, и решение состояло в том, что мой код изменился с:

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

до:

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

Код был вставлен и добавлен дополнительный символ новой строки.
Я использовал метод angel_007 для устранения неполадок.

0 голосов
/ 28 июля 2014

Я решил эту проблему, используя bash cgi-скрипт:

echo -e -n  "Content-type: text/html\n\n";
0 голосов
/ 08 мая 2013

"C" должен быть написан заглавными буквами в "Content-text"

0 голосов
/ 22 августа 2011

Я столкнулся с той же проблемой. Я сделал пару изменений, и мне показалось, что это сработало.

сделал первое заявление после ввода скрипта как print content-type. использовал метод cgi 'header' для печати типа контента, а не жесткого кодирования.

my $ cgi = CGI-> new; напечатать $ cgi-> header ('text / html');

Я наблюдал заголовок через заголовки Live HTTP в Firefox. Все время до этого изменения это был текст / обычный кусок. После этого изменения он изменился на text / html, и это сработало.

Надеюсь, это сработает и для вас.

0 голосов
/ 17 сентября 2010

Попробуйте добавить полный заголовок HTTP.Вместо

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

Попробуйте

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

См. Связанный вопрос: Почему мне нужно явно выводить заголовок HTTP для IIS, но не Apache?

и ссылка: http://search.cpan.org/~lds/CGI.pm-3.42/CGI.pm#CREATING_A_STANDARD_HTTP_HEADER:

...