Wrapper minimalis tanpa ketergantungan untuk menghosting skrip CGI dengan dukungan HTTP/1.1. Dirilis di bawah Lisensi MIT.
Instal cgi-core versi stabil terbaru :
npm instal cgi-core
Kemudian, mulai server CGI:
npx cgi-server --filePath ./cgi-bin
Berikut contoh cara setting server CGI dengan cgi-core :
import { createServer } from "node:http";import { createHandler } from "cgi-core";// buat server http yang menangani permintaan CGI di bawah jalur url /cgi-binconst handler = createHandler({
urlPath: "/cgi-bin",
jalur file: "./cgi-bin",
ekstensi: {"/usr/bin/Perl": ["pl", "cgi"],"/usr/bin/python": ["py"],"/usr/local/bin/node": [" js", "simpul"],
},
debugOutput: false,});const app = createServer(async (req, res) => {
const requestHandled = menunggu handler(req, res);
if (!requestHandled) {// di sini, tangani perutean apa pun di luar urlPath === '/cgi-bin'res.writeHead(200, { "Content-Type": "text/plain" });res.end( "di luar urlPath");
}});app.listen(3000);Contoh penggunaan menggunakan Express.
Url dasar untuk perutean. Bawaan: '/cgi-bin'
Jalur file tempat skrip CGI berada. Sangat disarankan untuk menetapkan nilai untuk filePath (contoh: './cgi-bin'). Bawaan: process.cwd()
Objek yang berisi nilai ekstensi file untuk jalur juru bahasa tertentu. Jika tidak ada jalur penerjemah yang ditemukan untuk ekstensi file, skrip CGI akan dipanggil sebagai executable mandiri. Bawaan:
// pada sistem POSIX{
"/usr/bin/Perl": ["pl", "cgi"],
"/usr/bin/python": ["py"],
"/usr/local/bin/node": ["js", "node"]}// pada sistem Windows{
"perl": ["pl", "cgi"],
"piton": ["py"],
"simpul": ["js", "simpul"]}Ekstensi file untuk mencari skrip indeks CGI di direktori mana pun. Bawaan: 'js'
Setel true untuk mengaktifkan keluaran debug. Bawaan: false
Setel true untuk mencetak log permintaan HTTP ke STDOUT. Bawaan: false
Ukuran permintaan HTTP yang diizinkan dan payload respons dalam byte. Bawaan: 2 * 1024 * 1024 (2 MB)
Ukuran potongan data payload permintaan HTTP dalam byte. Bawaan: 16 * 1024 (16 KB)
Ukuran potongan data muatan respons HTTP dalam byte. Bawaan: 16 * 1024 (16 KB)
Objek yang berisi muatan respons HTTP khusus per kode status. Bawaan: {}
// Contoh:{
404: {content: `<html> <body>404: File tidak ditemukan</body> </html>`,contentType: "text/html"
},
500: {content: `<html> <body>500: Kesalahan server internal</body> </html>`,contentType: "text/html"
}} Objek yang berisi variabel lingkungan khusus untuk diteruskan ke skrip CGI. Bawaan: {}
// Contoh:{
SERVER_ADMIN: "[email protected]",
ANOTHER_VAR: "nilai lain"} Perintah cgi-server dapat digunakan untuk menjalankan server HTTP untuk melayani skrip CGI.
npx cgi-server --port 3001 --urlPath /cgi-bin --filePath ./cgi-bin
-h, --help Display help --urlPath <urlPath> Set base url path for routing --filePath <filePath> Set file path where the CGI scripts are located --indexExtension <extension> 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 <port> Set the port to listen on
Selain variabel standar terkait HTTP, variabel lingkungan CGI berikut ini didukung:
CONTENT_LENGTH CONTENT_TYPE PATH PATH_INFO SCRIPT_FILENAME SCRIPT_NAME SERVER_PROTOCOL SERVER_SOFTWARE QUERY_STRING REQUEST_METHOD REQUEST_URI
cgi-core dirilis di bawah Lisensi MIT.
100% Gratis: cgi-core dapat digunakan secara bebas baik dalam proyek berpemilik maupun sumber terbuka.
Atribusi diperlukan: Anda harus menyimpan nama penulis dan informasi lisensi dalam kode yang didistribusikan. Item ini tidak perlu dilihat oleh pengguna dan dapat tetap berada dalam basis kode.