Upgrade header
Tiêu đề HTTP Upgrade request và response header có thể được sử dụng để nâng cấp kết nối máy khách/máy chủ đã được thiết lập lên một giao thức khác (qua cùng giao thức vận chuyển).
Ví dụ, nó có thể được máy khách sử dụng để nâng cấp kết nối từ HTTP/1.1 lên HTTP/2, hoặc kết nối HTTP(S) lên kết nối WebSocket.
Warning: HTTP/2 rõ ràng không cho phép sử dụng cơ chế và tiêu đề này; nó dành riêng cho HTTP/1.1.
| Loại tiêu đề | Request header, Response header |
|---|---|
| Forbidden request header | Có |
Cú pháp
Upgrade: <protocol>[/<protocol_version>]
Upgrade: <protocol>[/<protocol_version>], …, <protocolN>[/<protocol_versionN>]
Chỉ thị
<protocol>-
Các giao thức được liệt kê, phân cách bằng dấu phẩy, theo thứ tự ưu tiên giảm dần.
<protocol_version>Optional-
Phiên bản giao thức tùy chọn có thể được cung cấp với tiền tố
/gạch chéo tiến.
Mô tả
Trường tiêu đề Upgrade có thể được máy khách sử dụng để mời máy chủ chuyển sang một (hoặc nhiều) giao thức được liệt kê, theo thứ tự ưu tiên giảm dần.
Ví dụ, máy khách có thể gửi yêu cầu GET như được hiển thị, liệt kê các giao thức ưu thích để chuyển sang (trong trường hợp này example/1 và foo/2):
GET /index.html HTTP/1.1
Host: www.example.com
Connection: upgrade
Upgrade: example/1, foo/2
Note:
Tiêu đề Connection với loại upgrade phải luôn luôn được gửi cùng với tiêu đề Upgrade.
Máy chủ có thể bỏ qua yêu cầu, vì bất kỳ lý do nào, trong trường hợp đó nó nên phản hồi như thể tiêu đề Upgrade không được gửi (ví dụ, với 200 OK).
Nếu máy chủ sẽ nâng cấp kết nối, nó phải:
-
Gửi lại trạng thái phản hồi
101 Switching Protocolsvới tiêu đềUpgradechỉ định (các) giao thức đang được chuyển sang. Ví dụ:httpHTTP/1.1 101 Switching Protocols Upgrade: foo/2 Connection: Upgrade -
Gửi phản hồi cho yêu cầu ban đầu sử dụng giao thức mới (máy chủ chỉ có thể chuyển sang giao thức mà nó có thể hoàn thành yêu cầu ban đầu).
Máy chủ cũng có thể gửi tiêu đề như một phần của phản hồi Upgrade Required 426, để cho biết rằng máy chủ sẽ không thực hiện yêu cầu bằng giao thức hiện tại, nhưng có thể làm vậy nếu giao thức được thay đổi. Sau đó máy khách có thể yêu cầu thay đổi giao thức bằng quy trình trên.
Thêm chi tiết và ví dụ được cung cấp trong chủ đề Cơ chế nâng cấp giao thức.
Ví dụ
>Tiêu đề Upgrade với nhiều giao thức
Yêu cầu sau liệt kê nhiều giao thức theo thứ tự ưu tiên giảm dần:
Connection: upgrade
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Nâng cấp lên WebSocket
Đây là kết hợp tiêu đề phổ biến để sử dụng khi bắt đầu nâng cấp kết nối HTTP lên WebSockets. Xem Nâng cấp lên kết nối WebSocket để biết thêm thông tin.
Connection: Upgrade
Upgrade: websocket
Đặc tả
| Specification |
|---|
| HTTP Semantics> # field.upgrade> |
| HTTP Semantics> # status.426> |
| HTTP/2> # informational-responses> |