Python - Phản hồi HTTP

Http hoặc Hyper Text Transfer Protocol hoạt động trên mô hình máy chủ khách hàng. Thông thường trình duyệt web là máy khách và máy tính lưu trữ trang web là máy chủ. Khi nhận được yêu cầu từ máy khách, máy chủ sẽ tạo một phản hồi và gửi lại cho máy khách theo một định dạng nhất định.

Sau khi nhận và diễn giải một thông báo yêu cầu, một máy chủ sẽ trả lời bằng một thông báo phản hồi HTTP:


     
  • A Status-line
  • Zero or more header (General|Response|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

Các phần sau giải thích từng thực thể được sử dụng trong thông báo phản hồi HTTP.

Dòng trạng thái tin nhắn

Dòng trạng thái bao gồm phiên bản giao thức theo sau là mã trạng thái số và cụm từ văn bản liên quan của nó. Các phần tử được phân tách bằng ký tự SP khoảng trắng.

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Phiên bản HTTP

Máy chủ hỗ trợ HTTP phiên bản 1.1 sẽ trả về thông tin phiên bản sau:

HTTP-Version = HTTP/1.1

Mã trạng thái

Phần tử Mã trạng thái là một số nguyên 3 chữ số trong đó chữ số đầu tiên của Mã trạng thái xác định loại phản hồi và hai chữ số cuối cùng không có bất kỳ vai trò phân loại nào. Có 5 giá trị cho chữ số đầu tiên:

SN Mã và Mô tả
1 1xx: Informational

Nó có nghĩa là yêu cầu đã được nhận và quá trình này đang tiếp tục.

2 2xx: Success

Nó có nghĩa là hành động đã được nhận, hiểu và chấp nhận thành công.

3 3xx: Redirection

Nó có nghĩa là phải thực hiện thêm hành động để hoàn thành yêu cầu.

4 4xx: Client Error

Nó có nghĩa là yêu cầu chứa cú pháp không chính xác hoặc không thể được thực hiện.

5 5xx: Server Error

Nó có nghĩa là máy chủ không thực hiện được yêu cầu hợp lệ.

Mã trạng thái HTTP có thể mở rộng và các ứng dụng HTTP không bắt buộc phải hiểu ý nghĩa của tất cả các mã trạng thái đã đăng ký.

Sử dụng yêu cầu Python

Trong chương trình python dưới đây, chúng tôi sử dụng mô-đun urllib3 để thực hiện yêu cầu http GET và nhận phản hồi có chứa dữ liệu. Nó cũng cung cấp mã phản hồi cũng được quản lý bởi các chức năng trong mô-đun. Đối tượng PoolManager xử lý tất cả các chi tiết của việc gộp kết nối và cũng xử lý an toàn luồng.

import urllib3
http = urllib3.PoolManager()
resp = http.request('GET', 'http://tutorialspoint.com/robots.txt')
print resp.data
# get the status of the response
print resp.status

Khi chúng tôi chạy chương trình trên, chúng tôi nhận được kết quả sau:

User-agent: *
Disallow: /tmp
Disallow: /logs
Disallow: /rate/*
Disallow: /cgi-bin/*
Disallow: /videotutorials/video_course_view.php?*
Disallow: /videotutorials/course_view.php?*
Disallow: /videos/*
Disallow: /*/*_question_bank/*
Disallow: //*/*/*/*/src/*
200