2010-04-20 29 views
14

Tôi đang viết một dịch vụ web rất đơn giản, được viết bằng Python và chạy như CGI trên máy chủ Apache.Đọc tiêu đề của khách hàng từ tập lệnh Python CGI?

Theo tài liệu Python (ở đâu đó ... Tôi quên ở đâu), tôi có thể sử dụng sys.stdin để đọc dữ liệu được đăng bởi một khách hàng ngẫu nhiên và điều này đã hoạt động tốt. Tuy nhiên, tôi muốn có thể đọc thông tin tiêu đề HTTP cũng như - IP đến, tác nhân người dùng, v.v. Tôi cũng muốn giữ nó rất đơn giản cho bây giờ, bằng cách sử dụng các thư viện Python chỉ (vì vậy không có mod-python). Làm thế nào để tôi làm điều này?

Trả lời

13

Nếu bạn đang chạy như một CGI, bạn không thể đọc tiêu đề HTTP trực tiếp, nhưng máy chủ web đưa nhiều thông tin đó vào biến môi trường cho bạn. Bạn chỉ có thể chọn nó ra khỏi os.environ []

Danh sách các biến môi trường có thể ở đó khá dài. Bạn có thể tìm thấy nó bằng cách thực hiện tìm kiếm trên web cho "giao diện cổng chung". Ví dụ: trong http://www.ietf.org/rfc/rfc3875.txt, chúng được gọi là "meta-variables".

+0

Cảm ơn bạn! Đó là chính xác những gì tôi cần. – jbreed

4

Khi this page giải thích, hầu hết các tiêu đề yêu cầu HTTP được cung cấp cho tập lệnh CGI của bạn thông qua các biến môi trường. Chạy cgi.test() thay vì tập lệnh của bạn để xem môi trường (bao gồm cả tiêu đề yêu cầu HTTP) được hiển thị trở lại trình duyệt đang truy cập của bạn.

8

Đây là trao cho các kịch bản CGI thông qua môi trường:

import os 
user_agent = os.environ["HTTP_USER_AGENT"] 
ip = os.environ["REMOTE_ADDR"] 
Các vấn đề liên quan