2015-06-17 12 views
8

Như tiêu đề gợi ý, tôi đang tìm một số thông tin về mục đích của các trường tiêu đề giả/đại tràng, tức là tôi muốn biết tại sao chúng ta lại có loại tiêu đề thứ hai ...Mục đích của các trường tiêu đề giả/đại diện

Ngoài ra - tôi biết các trường tiêu đề giả/dấu hai chấm được sử dụng trong http2 thay cho dòng thông báo và trạng thái (^^^ lý do tôi không biết ^^^); nhưng là các trường tiêu đề giả/đại tràng được sử dụng trong http1 để chuyển tiếp thông tin khác nhau (từ trạng thái và yêu cầu)?

Trả lời

11

Mục đích của các lĩnh vực tiêu đề giả là để thống nhất cách thức thông tin request/response được tiến hành trong SPDY và ​​sau này trong HTTP/2 (mà là dựa trên SPDY).

Khi SPDY được thiết kế (nhưng cũng HTTP/2) có một nhu cầu để vận chuyển theo yêu cầu hoặc đáp ứng thông tin được định dạng theo nhiều cách khác nhau.

Các tiêu đề HTTP là các cặp (khóa, giá trị), thật dễ dàng.

Tuy nhiên, có khái niệm về phương thức HTTP. Điều đó xảy ra là mã thông báo đầu tiên của một dòng yêu cầu, vì vậy nó không phải là một tuple; khóa của nó được xác định bởi vị trí của nó (mã thông báo đầu tiên) và giá trị của nó là các ký tự thực tế có trên dòng yêu cầu tạo thành mã thông báo đầu tiên.

Cùng đi với mục tiêu yêu cầu, và phiên bản HTTP: họ là thứ hai và thứ ba token của dòng yêu cầu.

Vì vậy, khái niệm, một yêu cầu HTTP có thể được biểu diễn với cặp theo cách này, ví dụ:

(method, GET) 
(target, /) 
(version, HTTP/1.1) 
(Connection, close) 
(Accept, *) 

Tuy nhiên, "phương pháp", "mục tiêu" và "phiên bản" không thể được sử dụng như tiêu đề HTTP đơn giản , vì chúng không bao giờ được đặt tên như tiêu đề HTTP tiêu chuẩn theo đặc tả HTTP và mọi người có thể đã sử dụng chúng làm tên tiêu đề HTTP tùy chỉnh (hãy tưởng tượng một API REST bằng cách sử dụng tiêu đề "phiên bản").

HTTP/2 cần một cách để thực hiện những cặp theo một cách đồng nhất, như cặp, bởi vì đó sẽ đã đơn giản hóa (rất nhiều) các giao thức.

Do đó, việc giới thiệu các tên đặc biệt cho thông tin bổ sung được thực hiện bởi các đường yêu cầu và phản hồi. Thông tin bổ sung đó là vị trí trong HTTP/1.1, nhưng một cặp thông thường trong HTTP/2, làm cho HTTP/2 đồng nhất hơn về mặt này: nó chỉ mang cặp. Vì vậy, nhiều như vậy, rằng khung HTTP/2 mang yêu cầu và thông tin phản hồi là như nhau và nó chỉ được gọi là HEADERS.

Tên tiêu đề giả nơi được lựa chọn để bắt đầu với một dấu hai chấm, vì đó sẽ là một ký tự không hợp cho một tên tiêu đề trong HTTP/1.1. HTTP/1.1 không sử dụng tên tiêu đề giả.

Các vấn đề liên quan