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
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.