× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

CGI trong Python - Giải mã các kiến thức vể CGI trong lập trình với Python

01/06/2021 01:49

CGI - viết tắt của Common Gateway Interface là một tập hợp các chuẩn định nghĩa cách thông tin được trao đổi giữa Web Server và một Custom Script. Các thông số kỹ thuật CGI hiện nay được duy trì bởi NCSA. Cùng tìm hiểu về CGI trong Python và cách mà nó vận hành với ngôn ngữ lập trình này.

Khái niệm chung về CGI trong Python

CGI là một tập hợp các tiêu chuẩn xác định cách thức tiêu chuẩn để truyền thông tin hoặc yêu cầu của người dùng web đến một chương trình ứng dụng và lấy lại dữ liệu để chuyển tiếp nó cho người dùng. Nó là sự trao đổi thông tin giữa máy chủ web và một tập lệnh tùy chỉnh.

Khái niệm chung về CGI trong Python

Khái niệm chung về CGI trong Python

Khi người dùng yêu cầu trang web, máy chủ sẽ gửi trang web được yêu cầu. Máy chủ web thường chuyển thông tin đến tất cả các chương trình ứng dụng xử lý dữ liệu và gửi lại một thông báo được xác nhận; kỹ thuật truyền dữ liệu qua lại giữa máy chủ và ứng dụng này là Common Gateway Interface. Phiên bản hiện tại của CGI là CGI / 1.1 & CGI / 1.2 đang được xử lý.

Thiết lập CGI  trong Python

Các bước thiết lập CGI như sau:

Bước 1: Tìm hiểu người dùng nào đang chạy máy chủ Web

Bước 2: Kiểm tra cấu hình máy chủ để xem liệu bạn có thể chạy các tập lệnh trong một thư mục cụ thể hay không

Bước 3: Kiểm tra quyền của tệp

Bước 4: Đảm bảo rõ ràng rằng các tập lệnh bạn đã tạo có thể đọc được và thực thi được bởi người dùng máy chủ web

Bước 5: Đảm bảo dòng đầu tiên của Python-Script đề cập đến một máy chủ web mà trình thông dịch có thể chạy

Sơ đồ kiến trúc CGI trong Python

Cấu trúc chương trình CGI trong Python

Đầu ra của tập lệnh Python CGI phải bao gồm hai phần được phân tách bằng một dòng trống. Phần đầu tiên chứa số lượng tiêu đề mô tả máy khách loại dữ liệu đang theo sau.

Ví dụ:

print ("Content-Type : text/html")




# then comes the rest hyper-text documents

print ("<html>")

print ("<head>")

print ("<title>My First CGI-Program </title>")

print ("<head>")

print ("<body>")

print ("<h3>This is HTML's Body section </h3>")

print ("</body>")

print ("</html>")

Output

This is HTML's Body section

>>> Đọc thêm: Self trong Python - Bật mý lý do cần sử dụng self trong Python

Chương trình CGI đầu tiên

Dưới đây là một liên kết đơn giản, chúng được link tới một CGI script là hello.py. File này được lưu trong /var/www/cgi-bin và có nội dung như dưới. Trước khi chạy chương trình CGI, sử dụng câu lệnh chmod 755 hello.py để file được đổi sang mod có thể thực thi được

#!/usr/bin/python

print "Content-type:text/html\r\n\r\n"

print '<html>'

print '<head>'

print '<title>Hello Word - First CGI Program</title>'

print '</head>'

print '<body>'

print '<h2>Hello Word! This is my first CGI program</h2>'

print '</body>'

print '</html>'

Nếu click hello.py sau đó nó sẽ ra kết quả như hình dưới đây

Đoạn mã trong file hello.py là đoạn code đơn giản của Python, output viết trên file STDOUT file. Có một tính năng quan trọng và là tính năng có sẵn, ở đây là dòng đầu tiên được in ra Content-type:text/html\r\n\r\n. Dòng này được gửi ngược lại cho trình duyệt để hiển thị trên màn hình trình duyệt.

Đến thời điểm hiện tại phải hiểu được cơ bản về khái niệm của CGI và có thể viết nhiều chương trình CGI phức tạp sử dụng Python. Đoạn script có thể tương thích với bất kỳ hệ thống bên ngoài nào khác cũng như trao đổi thông tin như là RDBMS

Sử dụng mô đun CGI trong Python

Nếu lập trình viên viết tập lệnh CGI trong Python, dòng sau có thể dễ dàng được thêm:

import cgitb

cgitb.enable()

Đoạn mã trên kích hoạt một trình xử lý ngoại lệ đặc biệt sẽ hiển thị một báo cáo chi tiết trong trình duyệt web trong trường hợp xảy ra bất kỳ lỗi nào.

>>> Đọc thêm: Đa xử lý trong PHP - Cách tốt nhất để thực hiện đa xử lý

Tiêu đề HTTP sử dụng trong CGI

Rất ít danh sách quan trọng của các tiêu đề HTTP thường được sử dụng trong các chương trình CGI. Đó là:

Tiêu đề HTTP

Giá trị

Loại nội dung

text / html

Hết hạn

Ngày

Vị trí

URL

Set-Cookie

Chuỗi

Thời lượng nội dung

N

Môi trường biến CGI trong Python

Các chương trình CGI đều có thể dễ dàng truy cập các môi trường biên sau đây:

 

STT

Tên biến

Mô tả

1

CONTENT_TYPE

Kiểu dữ liệu của nội dung. Được sử dụng khi client gửi nội dung đính kèm tới server. Ví dụ như upload file

2

CONTENT_LENGTH

Độ dài của thông tin truy vấn. Nó chỉ có sẵn cho request với phương thức POST

3

HTTP_COOKIE

Trả về tập các cookie dưới dạng key value

4

HTTP_USER_AGENT

User-Agent yêu cầu trường header chứa thông tin về user agent xuất phát từ request. Nó là tên của trình duyệt web

5

PATH_INFO

Đường dẫn của CGI script

6

REMOTE_ADDR

Địa chỉ IP của máy chủ từ xa thực hiện yêu cầu. Nó là đăng nhập tin cậy hoặc xác thực

7

REQUEST_METHOD

Phương thức thực hiện request. Phổ biến nhất là GET và POST

8

SERVER_SOFTWARE

Tên của version mà phần mềm của server đang chạy

 

Kết luận: Bài viết trên đã giới thiệu tới bạn về CGI trong Python và một số kiến thức liên quan đến CGI. Hy vọng bạn có thể sử dụng các kiến thức này trong quá trình làm việc với CGI trong Python. Tìm hiểu các kiến thức về lập trình Python và các ngôn ngữ lập trình khác các khóa học lập trình tại Viện công nghệ thông tin T3H.