Как настроить.htaccess для запуска JavaScript с узлом в качестве CGI
Я проверяю это на моем локальном хосте Linux.
Вот что я пытаюсь:
balter@spectre:/var/www/html$ cat .htaccess
Action cgi-node "/usr/bin/env node"
AddHandler cgi-node .js
balter@spectre:/var/www/html$ ls -al hello.js
-rwxr-xr-x 1 balter balter 99 Oct 31 13:17 hello.js
balter@spectre:/var/www/html$ cat hello.js
#!/usr/bin/env node
console.log("Content-Type: text/html");
console.log("hello from javascript");
balter@spectre:/var/www/html$ node hello.js
Content-Type: text/html
hello from javascript
Когда я посещаю localhost/hello.js
все, что я вижу, это содержимое hello.js
ДОПОЛНЕНИЕ Мне было интересно, действительно ли я включил cgi. Я решил, что сделал, потому что PHP работал. Но я не был включен модуль CGI или включен в apache.conf
,
И я добавил cgi.load
и добавил в мой apache.conf
###################################################################
######### Adding capaility to run CGI-scripts #################
ServerName localhost
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
Options +ExecCGI
AddHandler cgi-script .cgi .pl .py .js
Теперь я получаю
запрещено
У вас нет прав доступа к /hello.js на этом сервере. Сервер Apache/2.4.18 (Ubuntu) на локальном хосте, порт 80
Кстати, то же самое с эквивалентным hello.py
,
0 ответов
Я знаю, что об этом спросили почти 2 года назад, но на тот случай, если кто-то еще приземлится здесь в поисках способа написания очень простого CGI-узла:
Для интерфейса Common Gateway требуется пустая строка между заголовками и содержимым.
Приведенный выше пример сценария можно исправить, добавив \n
до конца Content-Type
заголовок:
#!/usr/bin/env node
console.log("Content-Type: text/html\n");
console.log("hello from javascript");
Или добавив пустой console.log()
между заголовками и контентом:
#!/usr/bin/env node
console.log("Content-Type: text/html");
console.log();
console.log("hello from javascript");
Оба они функционально эквивалентны, так что это действительно вопрос личного стиля.