Máy chủ python http
Một lớp, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()2, là một lớp con của import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()3. Nó tạo và lắng nghe tại ổ cắm HTTP, gửi các yêu cầu tới một trình xử lý. Mã để tạo và chạy máy chủ trông như thế này def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler): server_address = ('', 8000) httpd = server_class(server_address, handler_class) httpd.serve_forever()lớp http. người phục vụ. HTTPServer(server_address , RequestHandlerClass)¶ Lớp này được xây dựng dựa trên lớp import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()4 bằng cách lưu trữ địa chỉ máy chủ dưới dạng các biến thể hiện có tên là import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()5 và import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()6. Trình xử lý có thể truy cập máy chủ, thường thông qua biến thể hiện import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()7 của trình xử lýlớp http. người phục vụ. ThreadingHTTPServer(server_address , RequestHandlerClass)¶ Lớp này giống với HTTPServer nhưng sử dụng các luồng để xử lý các yêu cầu bằng cách sử dụng import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()8. Điều này rất hữu ích để xử lý các ổ cắm mở trước của trình duyệt web, trên đó import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()2 sẽ đợi vô thời hạn Mới trong phiên bản 3. 7 import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()2 và import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()01 phải được cung cấp một RequestHandlerClass khi khởi tạo, trong đó mô-đun này cung cấp ba biến thể khác nhaulớp http. người phục vụ. BaseHTTPRequestHandler(yêu cầu , client_address , máy chủ)¶ Lớp này được sử dụng để xử lý các yêu cầu HTTP đến máy chủ. Bản thân nó không thể đáp ứng bất kỳ yêu cầu HTTP thực tế nào; . g. NHẬN hoặc ĐĂNG). import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()02 cung cấp một số biến lớp và thể hiện cũng như các phương thức để các lớp con sử dụng Trình xử lý sẽ phân tích yêu cầu và các tiêu đề, sau đó gọi một phương thức dành riêng cho loại yêu cầu. Tên phương thức được xây dựng từ yêu cầu. Ví dụ: đối với phương thức yêu cầu import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()03, phương thức import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()04 sẽ được gọi mà không có đối số. Tất cả các thông tin liên quan được lưu trữ trong các biến thể hiện của trình xử lý. Các lớp con không cần ghi đè hoặc mở rộng phương thức import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()05 import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()02 có các biến thể hiện sauclient_address¶ Chứa một bộ có dạng import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()07 đề cập đến địa chỉ của khách hàngmáy chủ¶ Chứa phiên bản máy chủ close_connection¶Boolean nên được đặt trước khi trả về import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()08, cho biết liệu có thể có yêu cầu khác hay không hoặc liệu kết nối có nên bị tắt hay khôngdòng yêu cầu¶ Chứa biểu diễn chuỗi của dòng yêu cầu HTTP. CRLF kết thúc bị tước. Thuộc tính này phải được đặt bởi import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()08. Nếu không có dòng yêu cầu hợp lệ nào được xử lý, nó sẽ được đặt thành chuỗi trốnglệnh¶ Chứa lệnh (loại yêu cầu). Ví dụ, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()90đường dẫn¶ Chứa đường dẫn yêu cầu. Nếu có thành phần truy vấn của URL, thì import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()91 bao gồm truy vấn. Sử dụng thuật ngữ của RFC 3986, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()91 ở đây bao gồm import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()93 và import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()94request_version¶ Chứa chuỗi phiên bản từ yêu cầu. Ví dụ, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()95tiêu đề¶ Giữ một thể hiện của lớp được chỉ định bởi biến lớp import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()96. Phiên bản này phân tích cú pháp và quản lý các tiêu đề trong yêu cầu HTTP. Hàm import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()97 từ import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()98 được sử dụng để phân tích cú pháp các tiêu đề và nó yêu cầu yêu cầu HTTP cung cấp tiêu đề kiểu RFC 2822 hợp lệrfile¶ Luồng đầu vào import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()99, sẵn sàng đọc từ đầu dữ liệu đầu vào tùy chọnwfile¶ Chứa luồng đầu ra để viết phản hồi lại cho máy khách. Phải tuân thủ đúng giao thức HTTP khi ghi vào luồng này để đạt được sự tương tác thành công với các máy khách HTTP Đã thay đổi trong phiên bản 3. 6. Đây là luồng import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()99. import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()02 có các thuộc tính sauserver_version¶ Chỉ định phiên bản phần mềm máy chủ. Bạn có thể muốn ghi đè lên điều này. Định dạng là nhiều chuỗi được phân tách bằng khoảng trắng, trong đó mỗi chuỗi có tên biểu mẫu[/version]. Ví dụ, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()12sys_version¶ Chứa phiên bản hệ thống Python, ở dạng có thể sử dụng được bằng phương thức import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()13 và biến lớp import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()14. Ví dụ, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()15error_message_format¶ Chỉ định một chuỗi định dạng sẽ được sử dụng bởi phương pháp import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()16 để tạo phản hồi lỗi cho máy khách. Chuỗi được điền theo mặc định với các biến từ import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()17 dựa trên mã trạng thái được chuyển đến import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()16error_content_type¶ Chỉ định tiêu đề Content-Type HTTP của các phản hồi lỗi được gửi tới máy khách. Giá trị mặc định là import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()19protocol_version¶ Chỉ định phiên bản HTTP mà máy chủ tuân thủ. Nó được gửi dưới dạng phản hồi để cho khách hàng biết khả năng giao tiếp của máy chủ cho các yêu cầu trong tương lai. Nếu được đặt thành import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()90, máy chủ sẽ cho phép các kết nối liên tục HTTP; . Để tương thích ngược, cài đặt mặc định là import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()95Lớp tin nhắn¶ Chỉ định một lớp giống như import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()94 để phân tích các tiêu đề HTTP. Thông thường, điều này không bị ghi đè và nó mặc định là import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()95phản hồi¶ Thuộc tính này chứa ánh xạ các số nguyên mã lỗi thành các bộ hai phần tử chứa một thông báo ngắn và dài. Ví dụ, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()96. Tin nhắn ngắn thường được sử dụng làm khóa tin nhắn trong phản hồi lỗi và tin nhắn dài làm khóa giải thích. Nó được sử dụng bởi các phương pháp import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()97 và import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()16 Một phiên bản import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()02 có các phương thức sau Gọi import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()08 một lần (hoặc, nếu kết nối liên tục được bật, nhiều lần) để xử lý các yêu cầu HTTP đến. Bạn không bao giờ cần ghi đè lên nó; handle_one_request()¶ Phương thức này sẽ phân tích cú pháp và gửi yêu cầu đến phương thức import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()01 thích hợp. Bạn không bao giờ cần phải ghi đè lên nóhandle_expect_100()¶ Khi một HTTP/1. 1 máy chủ tuân thủ nhận được tiêu đề yêu cầu import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()03, nó phản hồi lại bằng một import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()04 theo sau là tiêu đề import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()05. Phương pháp này có thể bị ghi đè để gây ra lỗi nếu máy chủ không muốn máy khách tiếp tục. cho e. g. máy chủ có thể chọn gửi import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()06 làm tiêu đề phản hồi và import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()07 Mới trong phiên bản 3. 2 send_error(mã , thông báo=Không , giải thích=Không có)¶Gửi và ghi lại một phản hồi lỗi hoàn chỉnh cho khách hàng. Mã số chỉ định mã lỗi HTTP, với thông báo dưới dạng mô tả lỗi tùy chọn, ngắn gọn, con người có thể đọc được. Đối số giải thích có thể được sử dụng để cung cấp thông tin chi tiết hơn về lỗi; . Thuộc tính import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()17 giữ các giá trị mặc định cho thông báo và giải thích giá trị đó sẽ được sử dụng nếu không có giá trị nào được cung cấp; . Nội dung sẽ trống nếu phương thức là HEAD hoặc mã phản hồi là một trong những điều sau đây. import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()91, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()92, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()93, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()94 Đã thay đổi trong phiên bản 3. 4. Phản hồi lỗi bao gồm tiêu đề Độ dài nội dung. Đã thêm đối số giải thích. send_response(mã , thông báo=Không có)¶Thêm tiêu đề phản hồi vào bộ đệm tiêu đề và ghi nhật ký yêu cầu được chấp nhận. Dòng phản hồi HTTP được ghi vào bộ đệm bên trong, theo sau là tiêu đề Máy chủ và Ngày. Các giá trị cho hai tiêu đề này lần lượt được chọn từ các phương thức import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()95 và import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()96. Nếu máy chủ không có ý định gửi bất kỳ tiêu đề nào khác bằng cách sử dụng phương thức import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()92, thì _____598 sẽ được theo sau bởi một cuộc gọi _______599 Đã thay đổi trong phiên bản 3. 3. Tiêu đề được lưu trữ vào bộ đệm bên trong và import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()99 cần được gọi một cách rõ ràng. send_header(từ khóa , giá trị)¶ Thêm tiêu đề HTTP vào bộ đệm bên trong sẽ được ghi vào luồng đầu ra khi gọi import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()99 hoặc import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()222. từ khóa nên chỉ định từ khóa tiêu đề, với giá trị chỉ định giá trị của nó. Lưu ý rằng, sau khi các cuộc gọi send_header được thực hiện xong, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()99 PHẢI ĐƯỢC gọi để hoàn tất thao tác Đã thay đổi trong phiên bản 3. 2. Tiêu đề được lưu trữ trong bộ đệm bên trong. send_response_only(mã , thông báo=Không có)¶Chỉ gửi tiêu đề phản hồi, được sử dụng cho các mục đích khi phản hồi import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()04 được máy chủ gửi tới máy khách. Các tiêu đề không được đệm và gửi trực tiếp luồng đầu ra. Nếu thông báo không được chỉ định, thông báo HTTP tương ứng với mã phản hồi sẽ được gửi Mới trong phiên bản 3. 2 end_headers()¶Thêm một dòng trống (biểu thị phần cuối của tiêu đề HTTP trong phản hồi) vào bộ đệm tiêu đề và gọi ____1222 Đã thay đổi trong phiên bản 3. 2. Tiêu đề đệm được ghi vào luồng đầu ra. flush_headers()¶Cuối cùng, gửi các tiêu đề đến luồng đầu ra và xóa bộ đệm tiêu đề bên trong Mới trong phiên bản 3. 3 log_request(mã='-' , size='-')¶Ghi nhật ký một yêu cầu được chấp nhận (thành công). mã phải chỉ định mã HTTP số được liên kết với phản hồi. Nếu có sẵn kích thước của phản hồi, thì nó sẽ được chuyển thành tham số kích thước log_error(. )¶Ghi nhật ký lỗi khi không thể thực hiện yêu cầu. Theo mặc định, nó chuyển thông báo tới import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()226, do đó, nó nhận các đối số giống nhau (định dạng và giá trị bổ sung)log_message(định dạng , . )¶ Ghi một tin nhắn tùy ý vào import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()227. Điều này thường được ghi đè để tạo cơ chế ghi lỗi tùy chỉnh. Đối số định dạng là một chuỗi định dạng kiểu printf tiêu chuẩn, trong đó các đối số bổ sung cho import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()226 được áp dụng làm đầu vào cho định dạng. Địa chỉ IP của máy khách và ngày giờ hiện tại được thêm tiền tố vào mọi thông báo được ghiversion_string()¶ Trả về chuỗi phiên bản của phần mềm máy chủ. Đây là sự kết hợp của các thuộc tính import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()14 và import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()220date_time_string(dấu thời gian=Không có)¶ Trả về ngày và giờ được cung cấp bởi dấu thời gian (phải là import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()221 hoặc ở định dạng được trả về bởi import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()222), được định dạng cho tiêu đề thư. Nếu dấu thời gian bị bỏ qua, nó sẽ sử dụng ngày và giờ hiện tại Kết quả trông giống như import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()223log_date_time_string()¶ Trả về ngày và giờ hiện tại, được định dạng để ghi nhật ký address_string()¶Trả về địa chỉ khách hàng Đã thay đổi trong phiên bản 3. 3. Trước đây, việc tra cứu tên đã được thực hiện. Để tránh sự chậm trễ khi phân giải tên, giờ đây nó luôn trả về địa chỉ IP. lớp http. người phục vụ. SimpleHTTPRequestHandler(yêu cầu , client_address , máy chủ , thư mục=Không có)¶Lớp này phục vụ các tệp từ thư mục thư mục trở xuống hoặc thư mục hiện tại nếu thư mục không được cung cấp, ánh xạ trực tiếp cấu trúc thư mục tới các yêu cầu HTTP Mới trong phiên bản 3. 7. Tham số thư mục. Đã thay đổi trong phiên bản 3. 9. Tham số thư mục chấp nhận một đối tượng dạng đường dẫn . Rất nhiều công việc, chẳng hạn như phân tích cú pháp yêu cầu, được thực hiện bởi lớp cơ sở import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()02. Lớp này thực hiện các hàm import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()225 và import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()226 Sau đây được định nghĩa là thuộc tính cấp lớp của import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()227server_version¶ Đây sẽ là import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()228, trong đó import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()229 được xác định ở cấp độ mô-đunextensions_map¶ Một hậu tố ánh xạ từ điển vào các loại MIME, chứa các phần ghi đè tùy chỉnh cho ánh xạ hệ thống mặc định. Ánh xạ được sử dụng không phân biệt chữ hoa chữ thường và do đó chỉ nên chứa các phím chữ thường Đã thay đổi trong phiên bản 3. 9. Từ điển này không còn chứa các ánh xạ hệ thống mặc định nữa mà chỉ chứa các phần ghi đè. Lớp import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()227 định nghĩa các phương thức saudo_HEAD()¶ Phương pháp này phục vụ loại yêu cầu import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()01. nó gửi các tiêu đề mà nó sẽ gửi cho yêu cầu import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()02 tương đương. Xem phương pháp import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()225 để được giải thích đầy đủ hơn về các tiêu đề có thể códo_GET()¶ Yêu cầu được ánh xạ tới một tệp cục bộ bằng cách diễn giải yêu cầu dưới dạng đường dẫn liên quan đến thư mục làm việc hiện tại Nếu yêu cầu được ánh xạ tới một thư mục, thì thư mục đó sẽ được kiểm tra để tìm tệp có tên import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()04 hoặc import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()05 (theo thứ tự đó). Nếu tìm thấy, nội dung của tệp sẽ được trả lại; . Phương pháp này sử dụng import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()07 để quét thư mục và trả về phản hồi lỗi import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()08 nếu import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()09 không thành công Nếu yêu cầu được ánh xạ tới một tệp, nó sẽ được mở. Bất kỳ ngoại lệ import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()10 nào khi mở tệp được yêu cầu đều được ánh xạ tới lỗi import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()08, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()12. Nếu có tiêu đề import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()13 trong yêu cầu và tệp không được sửa đổi sau thời gian này, phản hồi import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()14, import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()15 sẽ được gửi. Mặt khác, loại nội dung được đoán bằng cách gọi phương thức import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()16, phương thức này sử dụng biến extension_map và nội dung tệp được trả về Tiêu đề import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()17 với loại nội dung đã đoán được xuất ra, theo sau là tiêu đề import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()18 với kích thước của tệp và tiêu đề import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()19 với thời gian sửa đổi của tệp Sau đó, theo sau một dòng trống biểu thị phần cuối của tiêu đề và sau đó nội dung của tệp được xuất ra. Nếu loại MIME của tệp bắt đầu bằng import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()20 thì tệp được mở ở chế độ văn bản; Ví dụ về cách sử dụng, hãy xem phần triển khai hàm import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()21 trong Lib/http/server. py Đã thay đổi trong phiên bản 3. 7. Hỗ trợ tiêu đề import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()13. Lớp import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()227 có thể được sử dụng theo cách sau để tạo một máy chủ web rất cơ bản phục vụ các tệp liên quan đến thư mục hiện tại import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever() import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()22 cũng có thể được gọi trực tiếp bằng công tắc import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()25 của trình thông dịch. Tương tự như ví dụ trước, điều này phục vụ các tệp liên quan đến thư mục hiện tại import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()0 Máy chủ lắng nghe cổng 8000 theo mặc định. Giá trị mặc định có thể được ghi đè bằng cách chuyển số cổng mong muốn làm đối số import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()9 Theo mặc định, máy chủ tự liên kết với tất cả các giao diện. Tùy chọn import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()26 chỉ định một địa chỉ cụ thể mà nó sẽ liên kết. Cả địa chỉ IPv4 và IPv6 đều được hỗ trợ. Ví dụ: lệnh sau khiến máy chủ chỉ liên kết với localhost import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()1 Mới trong phiên bản 3. 4. ______027 đối số đã được giới thiệu. Mới trong phiên bản 3. 8. ____027 đối số được nâng cao để hỗ trợ IPv6 Theo mặc định, máy chủ sử dụng thư mục hiện tại. Tùy chọn import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()29 chỉ định một thư mục mà nó sẽ phục vụ các tệp. Ví dụ: lệnh sau sử dụng một thư mục cụ thể import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()9 Mới trong phiên bản 3. 7. ______030 đối số đã được giới thiệu. Theo mặc định, máy chủ tuân theo HTTP/1. 0. Tùy chọn import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()31 chỉ định phiên bản HTTP mà máy chủ tuân thủ. Ví dụ: lệnh sau chạy HTTP/1. 1 máy chủ phù hợp import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()0 Mới trong phiên bản 3. 11. ______032 đối số đã được giới thiệu. lớp http. người phục vụ. CGIHTTPRequestHandler(yêu cầu , client_address , máy chủ)¶Lớp này được sử dụng để phục vụ tệp hoặc đầu ra của tập lệnh CGI từ thư mục hiện tại trở xuống. Lưu ý rằng ánh xạ cấu trúc phân cấp HTTP sang cấu trúc thư mục cục bộ chính xác như trong import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()227 Ghi chú Tập lệnh CGI chạy bởi lớp import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()34 không thể thực thi chuyển hướng (mã HTTP 302), vì mã 200 (đầu ra tập lệnh theo sau) được gửi trước khi thực thi tập lệnh CGI. Điều này làm mất trước mã trạng thái Tuy nhiên, lớp sẽ chạy tập lệnh CGI, thay vì phục vụ nó dưới dạng tệp, nếu nó đoán đó là tập lệnh CGI. Chỉ CGI dựa trên thư mục được sử dụng — cấu hình máy chủ phổ biến khác là coi các tiện ích mở rộng đặc biệt là biểu thị các tập lệnh CGI Các hàm import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()225 và import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()226 được sửa đổi để chạy tập lệnh CGI và cung cấp đầu ra, thay vì cung cấp tệp, nếu yêu cầu dẫn đến một nơi nào đó bên dưới đường dẫn import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()37 import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()34 định nghĩa thành viên dữ liệu saucgi_directories¶ Điều này mặc định là import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()39 và mô tả các thư mục được coi là chứa các tập lệnh CGI import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()34 định nghĩa phương thức saudo_POST()¶ Phương pháp này phục vụ loại yêu cầu import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()41, chỉ được phép cho các tập lệnh CGI. Lỗi 501, “Chỉ có thể POST tới các tập lệnh CGI”, được xuất ra khi cố gắng POST tới một url không phải CGI Lưu ý rằng các tập lệnh CGI sẽ được chạy với UID của người dùng, vì lý do bảo mật. Các sự cố với tập lệnh CGI sẽ được chuyển thành lỗi 403 Có thể bật import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()34 trong dòng lệnh bằng cách chuyển tùy chọn import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()43 import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()9 Cân nhắc về Bảo mật¶import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()227 sẽ theo các liên kết tượng trưng khi xử lý các yêu cầu, điều này giúp các tệp bên ngoài thư mục được chỉ định có thể được phục vụ Các phiên bản trước của Python không xóa các ký tự điều khiển khỏi thông báo nhật ký được gửi tới thiết bị lỗi chuẩn từ import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()45 hoặc triển khai import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()02 import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()47 mặc định. Điều này có thể cho phép các máy khách từ xa kết nối với máy chủ của bạn gửi các mã kiểm soát bất chính đến thiết bị đầu cuối của bạn |