Минималистичная оболочка с нулевой зависимостью для размещения сценариев CGI с поддержкой HTTP/1.1. Выпущено по лицензии MIT.
Установите последнюю стабильную версию cgi-core
:
npm установить cgi-core
Затем запустите CGI-сервер:
npx cgi-server --filePath ./cgi-bin
Вот пример настройки CGI-сервера с помощью cgi-core
:
import { createServer } from "node:http";import { createHandler } from "cgi-core";// создаём http-сервер, который обрабатывает запросы CGI по URL-адресу /cgi-binconst handler = createHandler({ urlPath: "/cgi-bin", filePath: "./cgi-bin", расширения: {"/usr/bin/perl": ["pl", "cgi"],"/usr/bin/python": ["py"],"/usr/local/bin/node": [" js", "узел"], }, debugOutput: false,});const app = createServer(async (req, res) => { const requestHandled = обработчик ожидания (req, res); if (!requestHandled) {// здесь обрабатывает любую маршрутизацию за пределами urlPath === '/cgi-bin'res.writeHead(200, { "Content-Type": "text/plain" });res.end( "за пределами urlPath"); }});app.listen(3000);
Пример использования с использованием Express.
Базовый URL для маршрутизации. По умолчанию: '/cgi-bin'
Путь к файлу, в котором расположены сценарии CGI. Настоятельно рекомендуется установить значение для filePath
(пример: './cgi-bin'). По умолчанию: process.cwd()
Объект, содержащий значения расширений файлов для заданных путей интерпретатора. Если для расширения файла не найден путь интерпретатора, сценарий CGI будет вызываться как отдельный исполняемый файл. По умолчанию:
// в системах POSIX{ "/usr/bin/perl": ["pl", "cgi"], "/usr/bin/python": ["py"], "/usr/local/bin/node": ["js", "node"]}// в системах Windows{ "perl": ["pl", "cgi"], "питон": ["py"], "узел": ["js", "узел"]}
Расширение файла для поиска индексного сценария CGI в любом заданном каталоге. По умолчанию: 'js'
Установите true, чтобы включить вывод отладки. По умолчанию: false
Установите значение true, чтобы печатать журналы HTTP-запросов в STDOUT. По умолчанию: false
Размер разрешенных полезных данных HTTP-запроса и ответа в байтах. По умолчанию: 2 * 1024 * 1024
(2 МБ)
Размер блоков полезных данных HTTP-запроса в байтах. По умолчанию: 16 * 1024
(16 КБ)
Размер блоков полезных данных HTTP-ответа в байтах. По умолчанию: 16 * 1024
(16 КБ)
Объект, содержащий пользовательские полезные данные HTTP-ответа для каждого кода состояния. По умолчанию: {}
// Пример:{ 404: {content: ` 404: Файл не найден `,contentType: "text/html" }, 500: {content: ` 500: Внутренняя ошибка сервера `,contentType: "text/html" }}
Объект, содержащий пользовательские переменные среды для передачи в сценарии CGI. По умолчанию: {}
// Пример:{ SERVER_ADMIN: "[email protected]", ANOTHER_VAR: "другое значение"}
Команду cgi-server
можно использовать для запуска HTTP-сервера для обслуживания сценариев CGI.
npx cgi-server --port 3001 --urlPath /cgi-bin --filePath ./cgi-bin
-h, --help Display help --urlPathSet base url path for routing --filePath Set file path where the CGI scripts are located --indexExtension Set file extension to lookup for index files -d, --debugOutput Output errors for HTTP status 500 -l, --logRequests Log HTTP requests to STDOUT -p, --port Set the port to listen on
В дополнение к стандартным переменным, связанным с HTTP, поддерживаются следующие переменные среды CGI:
CONTENT_LENGTH CONTENT_TYPE PATH PATH_INFO SCRIPT_FILENAME SCRIPT_NAME SERVER_PROTOCOL SERVER_SOFTWARE QUERY_STRING REQUEST_METHOD REQUEST_URI
cgi-core
выпускается под лицензией MIT.
100% бесплатно: cgi-core
можно свободно использовать как в собственных проектах, так и в проектах с открытым исходным кодом.
Требуется указание авторства: вы должны сохранять имя автора и информацию о лицензии в любом распространяемом коде. Эти элементы не обязательно должны быть доступны пользователю и могут оставаться в базе кода.