Скрипт CGI Perl печатает HTML-строку (вместе с 'content-type: text / html') в браузер, а не выводит ее. Как исправить? - PullRequest
2 голосов
/ 12 апреля 2010

У меня есть CGI-скрипт на Perl, который должен отправить обратно HTML-код

print qq^Content-type: text/html\n\n
<HTML>
<HEAD>
<TITLE>some title</TITLE>
...
...
...
...
^:

Вместо просмотра отрисованного HTML-кода в браузере, я вижу весь HTML-код вместе с тегами и строкой типа контента в виде обычного текста. Ниже показано, как все выглядит в браузере -

Content-type: text/html


    <HTML>
    <HEAD>
    <TITLE>some title</TITLE>
    </HEAD>
    <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#000000" VLINK="#000000" ALINK="#000000" BACKGROUND="" onLoad=document.forms[0].elements[0].focus();>

Ответы [ 4 ]

1 голос
/ 12 апреля 2010

Кроме того, поскольку CGI-сценарии можно вызывать без веб-сервера, просто вызовите сценарий вручную (с правильными параметрами / переменными среды, если они имеют значение для сценария, и посмотрите на вывод. Как указывает eugene y, заголовки запроса должен быть первым выводом скрипта CGI, чтобы сервер мог их получить.

1 голос
/ 12 апреля 2010

Похоже, HTTP-заголовок отправляется перед выводом. Есть ли у вас какие-либо операторы print (возможно, в какой-то функции) перед этим кодом?

Кроме того, попробуйте включить предупреждения и ограничения (если они у вас отключены).

0 голосов
/ 26 сентября 2013

напечатать "Content-type: text / html \ n \ n"; Это говорит браузеру, что документ, следующий за двумя символами новой строки, будет HTML. Вы должны отправить заголовок, чтобы браузер знал, какой тип документа будет следующим, и вы должны включить пустую строку между заголовком и фактическим документом.

Итак, вам нужна пустая строка после «Content-type: text / html \ n \ n»

0 голосов
/ 12 апреля 2010

Звучит так, как будто ваш сервер не был настроен на распознавание определенных типов файлов в качестве исполняемых файлов cgi. Предполагая, что вы используете Apache, добавьте эту строку в ваш httpd.conf, но есть много других способов настроить это для достижения того же эффекта:

AddHandler cgi-script .cgi .pl

Возможно, вам также придется добавить ExecCGI в список опций вашего домена. См. Учебник Apache: динамическое содержимое с CGI для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...