Pada kuliah sebelumnya, kami memperkenalkan fungsi program CGI. Hari ini kita memasuki: Bagian 2, konsep pemrograman CGI. Isi kuliah ini menjadi dasar pemahaman mendalam tentang program CGI.
Rangkaian kuliah ini menggunakan Delphi untuk menulis program CGI. Untuk konten ini, Delphi telah dirangkum dalam kelasnya. Namun menurut saya salah satu kelebihan CGI adalah banyaknya bahasa pengembangan yang tersedia (masalah ini akan dibahas di bawah), dan isi kuliah ini dapat digunakan dalam bahasa pemrograman apa pun (termasuk Delphi). Oleh karena itu, untuk memanfaatkan CGI, isi perkuliahan ini tetap diperlukan, selain itu isi perkuliahan ini menjadi dasar untuk memahami program CGI secara mendalam;
2. Spesifikasi CGI:
Biasanya, server WEB adalah komputer yang kuat, namun tidak mungkin untuk memanfaatkan semua kekuatan pemrosesan. Kemunculan CGI memungkinkan orang untuk menggunakan kekuatan pemrosesan server WEB untuk menyediakan konten yang menarik dan dinamis kepada klien jarak jauh. Spesifikasi CGI berlaku untuk server WEB dan aplikasi yang berjalan di WEB. Ini bukan bagian dari protokol HTTP, tetapi sebagian besar server WEB mendukung spesifikasi ini, seperti NCSA httpd, CERN httpd, Apache httpd, IIS dan OmniHTTPD yang kami gunakan.
2.1, Ikhtisar CGI
CGI mendefinisikan seperangkat aturan yang diikuti dalam interoperasi antara server WEB, browser dan aplikasi. Misalnya, kueri sistem database jarak jauh melalui browser WEB:
2.2.Bahasa:
Program CGI dapat ditulis dalam bahasa apa pun yang dapat dijalankan di server WEB. Anda harus memilih bahasa yang paling Anda kenal dan paling cocok untuk pekerjaan Anda saat ini. Misalnya: Bahasa Perl cocok untuk pemrosesan string dan file, C lebih cocok untuk program besar dan kompleks, Visual Basic dan Delphi cocok untuk pemrosesan database, dan sebagainya. Berikut ini adalah bahasa pemrograman CGI yang umum digunakan:
C
C++
Perl
Tcl
ular piton
Skrip Kerang
Visual Dasar
Delfi
skrip apel
2.3, metode CGI:
Cara memanggil CGI disebut metode CGI. Ada tiga metode CGI utama:
2.3.1, metode DAPATKAN:
Metode GET adalah metode yang digunakan browser untuk membuat permintaan ke server WEB. Saat menggunakan metode ini, program CGI memperoleh data dari variabel lingkungan QUERY_STRING. Untuk mendapatkan parameter masukan, program CGI harus menganalisis variabel lingkungan ini. Bila data yang akan dikirim sangat panjang, sebaiknya digunakan metode POST.
2.3.2, metode POST:
Saat menggunakan metode POST, program CGI mendapatkan data input dari stdin (input standar). Karena tidak ada EOF (End Of File) di akhir data masukan, program CGI harus menggunakan nilai variabel lingkungan CONTENT_LENGTH agar dapat membaca data masukan dengan benar. Keuntungan terbesar menggunakan metode ini adalah dapat mengirimkan data dalam jumlah besar, sedangkan metode GET tidak dapat mengirimkan data dalam jumlah besar karena keterbatasan panjang URL (umumnya tidak lebih dari 1024 byte). Saat ini, metode POST adalah satu-satunya pilihan.
2.3.3, metode KEPALA:
Metode HEAD pada dasarnya sama dengan metode GET, hanya saja metode ini mentransmisikan data dari server WEB ke browser. Selain itu, hanya informasi header HTTP yang dikirimkan.
2.4.Spesifikasi antarmuka:
Berikut ini akan diperkenalkan empat metode utama server WEB untuk berkomunikasi dengan program CGI: variabel lingkungan, baris perintah, input standar, dan output standar. (Berdasarkan CGI Versi 1.1)
2.4.1.Variabel lingkungan:
AUTH_TYPE: Jika server mendukung pengakuan dan skrip dilindungi, berikan jenis pengakuan.
CONTENT_LENGTH: Memberikan panjang data yang dikirimkan menggunakan metode POST dalam byte. Variabelnya kosong saat menggunakan metode GET.
CONTENT_TYPE: Memberikan tipe data MINE yang dikirimkan saat menggunakan metode POST. Variabelnya kosong saat menggunakan metode GET. Seperti: application/x-www-form-urlencoded.
GETWAY_INTERFACE: Berikan nama spesifikasi CGI dan nomor versi, seperti: CGI/1.1.
PATH_INFO: memberikan informasi jalur tambahan setelah nama program CGI di URL.
PATH_TRANSLATED: Jalur fisik program CGI, biasanya direktori root WEB, nama skrip, dan informasi jalur tambahan.
QUERY_STRING: Informasi setelah karakter "?" di URL. Variabel lingkungan ini memberikan data masukan saat menggunakan metode GET.
REMOTE_ADDR: IP komputer jarak jauh yang membuat permintaan.
REMOTE_HOST: Nama komputer jarak jauh yang membuat permintaan.
REMOTE_IDENT: Memberikan nama pengguna yang ditentukan di RFC 931.
Catatan: RFC 931 adalah dokumen resmi Internet, yang menjelaskan metode konfirmasi identifikasi pengguna dalam koneksi TCP. Dokumentasi di: http://sunsite.auc.dk/RFC/rfc/rfc931.html.
REMOTE_USER: Memberikan nama pengguna resmi dari klien yang membuat permintaan.
REQUEST_METHOD: Metode untuk membuat permintaan, yang dapat berupa GET, HEAD dan POST.
SCRIPT_NAME: Jalur virtual untuk menjalankan program CGI, seperti: /cgi-bin/query.cgi.
SERVER_NAME: Nama domain atau alamat IP komputer yang menjalankan perangkat lunak server WEB, seperti: www.chinabyte.com.
SERVER_PORT: Nomor port server WEB, nilai defaultnya adalah 80.
SERVER_PROTOCOL: Nama protokol dan nomor versi yang digunakan oleh server WEB, seperti: HTTPD/1.0.
SERVER_SOFTWARE: Nama server WEB yang menjalankan program CGI. Formatnya adalah "nama server/nomor versi", seperti: NCSA/1.5b5.
HTTP_ACCEPT: "Acccpect: baris header" yang dikirim oleh klien, sesuai dengan tipe MIME yang dapat ditangani klien, dalam format "tipe/subtipe, tipe/subtipe, dll.", seperti: */*, image/ gif, gambar/jpeg.
HTTP_REFERER: Ya Referer: Direktori baris header, berisi URL formulir (Formulir) saat membuat permintaan CGI, seperti: http://www.chinabyte.com/register.form.
HTTP_USER_AGENT: Nama browser klien yang membuat permintaan, seperti: Mozilla/1.2N (Windows;I;32bit).
Variabel lingkungan di atas dapat Anda lihat menggunakan program demonstrasi pada kuliah sebelumnya.
2.4.2, baris perintah:
Baris perintah CGI hanya digunakan saat melakukan kueri dengan ISINDEX. Kueri ISINDEX adalah kueri khusus yang diapit di antara <ISINDEX> dan <BASE HREP="..">. Baris perintah dapat mengambil banyak parameter.
2.4.3. Masukan standar:
Saat menggunakan metode POST, program CGI mendapatkan data yang dikirimkan dari stdin. Seperti disebutkan sebelumnya, nilai variabel lingkungan CONTENT_TYPE dan CONTENT_LENGTH harus digunakan. Yang perlu diperhatikan adalah URL pada data dikodekan, seperti spasi diganti dengan tanda tambah, ~ diganti dengan %7E, dan seterusnya.
2.4.4. Keluaran standar:
Program CGI mengirimkan data ke browser melalui output standar, atau perintah yang dapat diinterpretasikan oleh server WEB. Program CGI dapat berkomunikasi dengan browser melalui server WEB, dan nama programnya harus dimulai dengan "nph-", yang mewakili informasi header yang belum dianalisis. Program CGI bertanggung jawab atas kebenaran informasi header HTTP yang dikembalikan ke browser.
Saat tidak menggunakan program nph, server mencari tiga header khusus yang mungkin dikembalikan CGI:
Tipe konten: Informasi header tipe MIME, seperti: Saat memasukkan HTML, "Jenis konten: teks/html" biasanya digunakan.
Lokasi: Beritahu server bahwa Anda menunjuk ke dokumen lain. Server akan mengalihkan klien atau mengirimkan konten dokumen, bergantung pada apakah URL tersebut merupakan jalur lengkap atau jalur relatif.
Status: Baris status yang dikirim oleh server ke klien. Formatnya adalah: nnnXXXXX, nnn adalah kode tiga digit, dan XXXXX adalah teks deskripsi yang sesuai.