Python - Tiêu đề HTTP

Yêu cầu và phản hồi giữa máy khách và máy chủ liên quan đến tiêu đề và nội dung trong thư. Tiêu đề chứa thông tin cụ thể về giao thức xuất hiện ở đầu thông báo thô được gửi qua kết nối TCP. Nội dung thư được phân tách khỏi tiêu đề bằng một dòng trống.

Ví dụ về Tiêu đề

Các tiêu đề trong phản hồi http có thể được phân loại thành các loại sau. Dưới đây là mô tả về tiêu đề và một ví dụ.

Kiểm soát bộ nhớ đệm

Trường tiêu đề chung của Cache-Control được sử dụng để chỉ định các lệnh mà tất cả hệ thống bộ nhớ đệm PHẢI tuân theo. Cú pháp như sau:

Cache-Control : cache-request-directive|cache-response-directive

Máy khách hoặc máy chủ HTTP có thể sử dụng Cache-controltiêu đề chung để chỉ định các tham số cho bộ đệm hoặc để yêu cầu một số loại tài liệu từ bộ đệm. Các chỉ thị bộ nhớ đệm được chỉ định trong danh sách được phân tách bằng dấu phẩy. Ví dụ:

Cache-control: no-cache

Kết nối

Trường tiêu đề chung của Kết nối cho phép người gửi chỉ định các tùy chọn mong muốn cho kết nối cụ thể đó và không được giao tiếp bằng proxy qua các kết nối khác. Sau đây là cú pháp đơn giản để sử dụng tiêu đề kết nối:

Connection : "Connection"

HTTP / 1.1 xác định tùy chọn kết nối "đóng" để người gửi báo hiệu rằng kết nối sẽ bị đóng sau khi hoàn thành phản hồi. Ví dụ:

Connection: close

Theo mặc định, HTTP 1.1 sử dụng kết nối liên tục, nơi kết nối không tự động đóng sau một giao dịch. Mặt khác, HTTP 1.0 không có các kết nối liên tục theo mặc định. Nếu một ứng dụng khách 1.0 muốn sử dụng các kết nối liên tục, nó sẽ sử dụngkeep-alive tham số như sau:

Connection: keep-alive

Ngày

Tất cả các tem ngày / giờ HTTP PHẢI được thể hiện bằng Giờ trung bình Greenwich (GMT), không có ngoại lệ. Các ứng dụng HTTP được phép sử dụng bất kỳ biểu hiện nào sau đây của ba biểu tượng dấu ngày / giờ:

Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format

Chuyển mã hóa

Trường tiêu đề chung Mã hóa Chuyển cho biết kiểu chuyển đổi nào đã được áp dụng cho nội dung thư để chuyển một cách an toàn giữa người gửi và người nhận. Điều này không giống với mã hóa nội dung vì mã hóa truyền là một thuộc tính của thông báo, không phải của phần thân thực thể. Cú pháp của trường tiêu đề Mã hóa Chuyển như sau:

Transfer-Encoding: chunked

Tất cả các giá trị mã hóa chuyển giao đều không phân biệt chữ hoa chữ thường.

Nâng cấp

Các nâng cấp chung-header cho phép khách hàng để xác định những giao thức truyền thông thêm nó hỗ trợ và muốn sử dụng nếu phát hiện máy chủ nó thích hợp với các giao thức chuyển đổi. Ví dụ:

Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

Trường tiêu đề Nâng cấp nhằm cung cấp một cơ chế đơn giản để chuyển đổi từ HTTP / 1.1 sang một số giao thức không tương thích khác.

Thông qua

Các Via chung tiêu đề phải được sử dụng bởi các cổng và proxy để chỉ các giao thức trung gian và người nhận. Ví dụ: một thông báo yêu cầu có thể được gửi từ một tác nhân người dùng HTTP / 1.0 tới một proxy nội bộ có tên mã là "fred", sử dụng HTTP / 1.1 để chuyển tiếp yêu cầu tới một proxy công cộng tại nothing.com, nó sẽ hoàn thành yêu cầu bằng chuyển tiếp nó đến máy chủ gốc tại www.ics.uci.edu. Yêu cầu mà www.ics.uci.edu nhận được sau đó sẽ có trường tiêu đề Via sau:

Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)

Trường tiêu đề Nâng cấp nhằm cung cấp một cơ chế đơn giản để chuyển đổi từ HTTP / 1.1 sang một số giao thức không tương thích khác.

Cảnh báo

Các cảnh báo chung-header được sử dụng để thực hiện thêm thông tin về tình trạng, chuyển đổi một thông điệp mà có thể không được phản ánh trong thông điệp. Một phản hồi có thể mang nhiều hơn một tiêu đề Cảnh báo.

Warning : warn-code SP warn-agent SP warn-text SP warn-date

Thí dụ

Trong ví dụ dưới đây, chúng tôi sử dụng mô-đun urllib2 để nhận phản hồi bằng cách sử dụng urlopen. Tiếp theo, chúng tôi áp dụng phương thức info () để lấy thông tin tiêu đề cho phản hồi đó.

import urllib2
response = urllib2.urlopen('http://www.tutorialspoint.com/python')
html = response.info()
print html

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

Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Origin: *
Cache-Control: max-age=2592000
Content-Type: text/html; charset=UTF-8
Date: Mon, 02 Jul 2018 11:06:07 GMT
Expires: Wed, 01 Aug 2018 11:06:07 GMT
Last-Modified: Sun, 01 Jul 2018 21:05:38 GMT
Server: ECS (tir/CDD1)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 22063
Connection: close