Sec-WebSocket-Extensions header
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Tiêu đề HTTP Sec-WebSocket-Extensions request và response header được sử dụng trong bắt tay mở WebSocket để thương lượng phần mở rộng giao thức được máy khách và máy chủ sử dụng.
Trong yêu cầu, tiêu đề chỉ định một hoặc nhiều phần mở rộng mà ứng dụng web muốn sử dụng, theo thứ tự ưu tiên. Chúng có thể được thêm vào nhiều tiêu đề, hoặc dưới dạng giá trị phân cách bằng dấu phẩy được thêm vào một tiêu đề duy nhất. Mỗi phần mở rộng cũng có thể có một hoặc nhiều tham số — đây là các giá trị phân cách bằng dấu chấm phẩy được liệt kê sau phần mở rộng.
Trong phản hồi, tiêu đề chỉ có thể xuất hiện một lần, nơi nó chỉ định phần mở rộng được máy chủ chọn từ các sở thích của máy khách. Giá trị này phải là phần mở rộng đầu tiên mà máy chủ hỗ trợ từ danh sách được cung cấp trong tiêu đề yêu cầu.
Tiêu đề yêu cầu được trình duyệt tự động thêm dựa trên khả năng của nó, và không phụ thuộc vào các tham số được truyền vào constructor khi WebSocket được tạo.
| Loại tiêu đề | Request header, Response header |
|---|---|
| Forbidden request header | Có (tiền tố Sec-) |
Cú pháp
Sec-WebSocket-Extensions: <extensions>
Chỉ thị
<extensions>-
Danh sách phân cách bằng dấu phẩy các phần mở rộng cần yêu cầu (hoặc để máy chủ đồng ý hỗ trợ). Thường được chọn từ IANA WebSocket Extension Name Registry (cũng có thể sử dụng phần mở rộng tùy chỉnh). Các phần mở rộng nhận tham số phân định chúng bằng dấu chấm phẩy.
Ví dụ
>Bắt tay mở WebSocket
Yêu cầu HTTP dưới đây hiển thị bắt tay mở nơi máy khách hỗ trợ phần mở rộng permessage-deflate (với tham số client_max_window_bits) và phần mở rộng bbf-usp-protocol.
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits, bbf-usp-protocol
Yêu cầu dưới đây với các tiêu đề riêng biệt cho mỗi phần mở rộng là tương đương:
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Extensions: bbf-usp-protocol
Phản hồi dưới đây có thể được gửi từ máy chủ để cho biết rằng nó sẽ hỗ trợ phần mở rộng permessage-deflate:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Extensions: permessage-deflate
Đặc tả
| Specification |
|---|
| The WebSocket Protocol> # section-11.3.2> |
Tương thích trình duyệt
Xem thêm
Sec-WebSocket-AcceptSec-WebSocket-KeySec-WebSocket-VersionSec-WebSocket-Protocol- Bắt tay WebSocket và Subprotocols trong Viết WebSocket servers