Origin-Agent-Cluster header
Tiêu đề HTTP Origin-Agent-Cluster response header được sử dụng để yêu cầu rằng Document liên quan nên được đặt trong cụm tác nhân được khóa theo nguồn gốc.
Điều này có nghĩa là các tài nguyên hệ điều hành (ví dụ: tiến trình hệ điều hành) được sử dụng để đánh giá tài liệu chỉ nên được chia sẻ với các tài liệu khác từ cùng origin.
Tác dụng của điều này là một tài liệu tốn tài nguyên sẽ ít có khả năng làm giảm hiệu suất của các tài liệu từ các nguồn gốc khác.
| Loại tiêu đề | Response header |
|---|
Cú pháp
Origin-Agent-Cluster: <boolean>
Chỉ thị
Mô tả
Các trình duyệt web hiện đại có kiến trúc đa tiến trình trong đó các trang từ các nguồn gốc khác nhau có thể chạy trong các tiến trình hệ điều hành khác nhau. Điều này quan trọng cho hiệu suất, vì nó có nghĩa là trang tốn tài nguyên sẽ không có nhiều tác động đến các trang khác mà người dùng có mở.
Tuy nhiên, trình duyệt thường không thể chạy các trang cùng trang web, khác nguồn gốc trong các tiến trình khác nhau, vì một số API DOM phụ thuộc vào giao tiếp cùng trang web khác nguồn gốc. Ví dụ: theo mặc định, các trang từ hai nguồn gốc sau đây sẽ chia sẻ cùng tài nguyên hệ điều hành:
https://apples.example.org https://oranges.example.org
Bằng cách đặt tiêu đề Origin-Agent-Cluster, trang có thể yêu cầu trình duyệt phân bổ tài nguyên chuyên dụng cho nguồn gốc này không được chia sẻ với bất kỳ nguồn gốc nào khác.
Trình duyệt không bắt buộc phải tôn trọng yêu cầu. Nếu có, thuộc tính Window.originAgentCluster trả về true, và cửa sổ không thể thực hiện những điều sau, tất cả phụ thuộc vào giao tiếp cùng trang web khác nguồn gốc:
- Sử dụng
Document.domain. - Gửi các đối tượng
WebAssembly.Moduleđến các trang cùng trang web khác nguồn gốc khác bằngpostMessage(). - Gửi các đối tượng
SharedArrayBufferhoặcWebAssembly.Memoryđến các trang cùng trang web khác nguồn gốc.
Cụm tác nhân được khóa theo nguồn gốc không nên được coi là tính năng bảo mật: trình duyệt có thể bỏ qua yêu cầu vì nhiều lý do khác nhau, hoặc chọn triển khai nó theo cách không cung cấp bảo vệ bộ nhớ (ví dụ: sử dụng các luồng riêng biệt thay vì các tiến trình riêng biệt). Thay vào đó, tính năng này là gợi ý rằng trải nghiệm người dùng sẽ được cải thiện nếu nguồn gốc này được phân bổ tài nguyên chuyên dụng.
Trình duyệt sẽ đảm bảo rằng tất cả các trang từ một nguồn gốc nhất định đều được khóa theo nguồn gốc hoặc không. Điều này có nghĩa là:
- Nếu trang đầu tiên từ nguồn gốc không đặt tiêu đề, thì không có trang nào khác từ nguồn gốc đó sẽ được khóa theo nguồn gốc, ngay cả khi những trang khác đặt tiêu đề.
- Nếu trang đầu tiên từ nguồn gốc đặt tiêu đề và được khóa theo nguồn gốc, thì tất cả các trang khác từ nguồn gốc đó sẽ được khóa theo nguồn gốc dù chúng có yêu cầu hay không.
Để tránh tình huống không thể đoán trước này, bạn nên đặt tiêu đề này cho tất cả các trang từ một nguồn gốc nhất định, hoặc không có trang nào.
Ví dụ
Origin-Agent-Cluster: ?1
Đặc tả
| Thông số kỹ thuật |
|---|
| HTML> # origin-agent-cluster> |
Khả năng tương thích trình duyệt
Xem thêm
Window.originAgentCluster- Cụm tác nhân và chia sẻ bộ nhớ trong Mô hình thực thi JavaScript
- Requesting performance isolation with the Origin-Agent-Cluster header trên web.dev