Как включить CGI-скрипт в HTML-документ?

Я должен включить свой CGI-скрипт login.pl в HTML-документ index.html. Я погуглил ответы и с удивлением обнаружил, что на этот вопрос трудно получить окончательный ответ. Некоторые предлагают использовать включения на стороне сервера, но, насколько я понимаю, они используются для размещения HTML внутри CGI, а это не то, что мне нужно. Я знаю, что в JSP и PHP можно использовать такие теги, как ‹% %> и теги php, чтобы включать код внутри документа HTML. Есть ли аналогичная конструкция для CGI? P.S. Я использую структуру CGI.pm и хочу запустить вывод login.pl внутри index.html.


person Urler    schedule 21.08.2014    source источник


Ответы (2)


Вам нужен HTML::Template или Template::Toolkit. Любой из них позволит вам поместить теги в ваш файл HTML, и ваш сценарий CGI сможет заполнить данные.

Обратите внимание, что вы будете отправлять или получать из сценария CGI, который будет читать HTML-файл, заполнять его, а затем отправлять построенный HTML-файл клиенту. Браузер клиента не будет напрямую обращаться к файлу HTML.

В вашем случае браузер клиента отправит сообщение на login.pl, а затем на сервере запустится сценарий Perl, создаст HTML-файл и передаст его клиенту.

person imran    schedule 21.08.2014
comment
Гораздо лучший подход, чем использование SSI. - person ThisSuitIsBlackNot; 22.08.2014
comment
Мне никогда не нравилось, как PHP и некоторые другие фреймворки позволяют смешивать код и HTML вместе. Я считаю, что метод шаблона чище, позволяет мне отделить код от HTML. Легче поддерживать тоже. - person imran; 22.08.2014

Это невозможно. CGI — это метод вызова скриптов или программ на сервере.

См. https://en.wikipedia.org/wiki/Common_Gateway_Interface.

PHP, ASP и JSP в виде специальных документов, которые анализируются интерпретатором на стороне сервера, который затем выполняет включенный код. Документы HTML не могут быть выполнены, следовательно, это невозможно.

Однако вы можете использовать включения на стороне сервера (SSI, https://en.wikipedia.org/wiki/Server_Side_Includes) и включать/вызывать CGI-программы оттуда - однако это менее мощно, чем PHP, JSP и ASP).

person MrTux    schedule 21.08.2014
comment
Меня не волнует мощность, только возможность запускать вывод из login.pl внутри index.html. - person Urler; 22.08.2014