Как настроить.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");

Оба они функционально эквивалентны, так что это действительно вопрос личного стиля.

Другие вопросы по тегам