Permissions-Policy header
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Tiêu đề HTTP Permissions-Policy response header cung cấp cơ chế để cho phép và từ chối sử dụng các tính năng của trình duyệt trong tài liệu hoặc trong bất kỳ phần tử <iframe> nào trong tài liệu.
Để biết thêm thông tin, xem bài viết chính về Chính sách quyền hạn.
| Loại tiêu đề | Response header |
|---|
Cú pháp
Permissions-Policy: <directive>=<allowlist>
<directive>-
Chỉ thị Chính sách quyền hạn để áp dụng
allowlist. Xem Chỉ thị bên dưới để biết danh sách tên chỉ thị được phép. <allowlist>-
Danh sách cho phép là danh sách các nguồn gốc nhận một hoặc nhiều giá trị sau được chứa trong dấu ngoặc đơn, phân tách bằng dấu cách:
*(ký tự đại diện)-
Tính năng sẽ được phép trong tài liệu này và tất cả các ngữ cảnh duyệt web lồng nhau (
<iframe>) bất kể nguồn gốc của chúng. ()(danh sách cho phép trống)-
Tính năng bị tắt trong các ngữ cảnh duyệt web cấp cao nhất và lồng nhau. Tương đương cho thuộc tính
allow<iframe>là'none'. self-
Tính năng sẽ được phép trong tài liệu này và trong tất cả các ngữ cảnh duyệt web lồng nhau (
<iframe>) chỉ trong cùng nguồn gốc. Tính năng không được phép trong các tài liệu khác nguồn gốc trong các ngữ cảnh duyệt web lồng nhau.selfcó thể được coi là viết tắt chohttps://your-site.example.com. Tương đương cho thuộc tínhallow<iframe>làself. src-
Tính năng sẽ được phép trong
<iframe>này, miễn là tài liệu được tải vào nó đến từ cùng nguồn gốc với URL trong thuộc tính src của nó. Giá trị này chỉ được sử dụng trong thuộc tínhallow<iframe>, và là giá trịallowlistmặc định trong<iframe>. "<origin>"-
Tính năng được phép cho các nguồn gốc cụ thể (ví dụ:
"https://a.example.com"). Các nguồn gốc nên được phân tách bằng dấu cách. Lưu ý rằng các nguồn gốc trong thuộc tínhallow<iframe>không được trích dẫn.
Các giá trị
*và()chỉ có thể được sử dụng một mình, trong khiselfvàsrccó thể được sử dụng kết hợp với một hoặc nhiều nguồn gốc.Note: Các chỉ thị có danh sách cho phép mặc định, luôn là một trong
*,selfhoặcnonecho tiêu đề HTTPPermissions-Policy, và điều chỉnh hành vi mặc định nếu chúng không được liệt kê rõ ràng trong chính sách. Những điều này được chỉ định trên các trang tham chiếu chỉ thị riêng lẻ. Đối với thuộc tínhallow<iframe>, hành vi mặc định luôn làsrc.
Khi được hỗ trợ, bạn có thể bao gồm ký tự đại diện trong các nguồn gốc Chính sách quyền hạn. Điều này có nghĩa là thay vì phải chỉ định rõ ràng nhiều tên miền con khác nhau trong danh sách cho phép, bạn có thể chỉ định tất cả trong một nguồn gốc với ký tự đại diện.
Vì vậy, thay vì
("https://example.com" "https://a.example.com" "https://b.example.com" "https://c.example.com")
Bạn có thể chỉ định
("https://example.com" "https://*.example.com")
Note:
"https://*.example.com" không khớp "https://example.com".
Chỉ thị
accelerometerExperimental-
Kiểm soát xem tài liệu hiện tại có được phép thu thập thông tin về gia tốc của thiết bị thông qua giao diện
Accelerometerhay không. ambient-light-sensorExperimental-
Kiểm soát xem tài liệu hiện tại có được phép thu thập thông tin về lượng ánh sáng trong môi trường xung quanh thiết bị thông qua giao diện
AmbientLightSensorhay không. aria-notifyExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng phương thức
ariaNotify()để kích hoạt thông báo screen reader hay không. attribution-reportingDeprecated-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Attribution Reporting API hay không.
autoplayExperimental-
Kiểm soát xem tài liệu hiện tại có được phép tự động phát phương tiện được yêu cầu thông qua giao diện
HTMLMediaElementhay không. bluetoothExperimental-
Kiểm soát xem việc sử dụng Web Bluetooth API có được phép hay không.
browsing-topicsDeprecated Non-standard-
Kiểm soát quyền truy cập vào Topics API.
cameraExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng thiết bị đầu vào video hay không.
captured-surface-controlExperimental-
Kiểm soát xem tài liệu có được phép sử dụng Captured Surface Control API hay không.
ch-ua-high-entropy-valuesExperimental-
Kiểm soát xem tài liệu có được phép sử dụng phương thức
NavigatorUAData.getHighEntropyValues()để lấy dữ liệu tác nhân người dùng entropy cao hay không. compute-pressureExperimental-
Kiểm soát quyền truy cập vào Compute Pressure API.
cross-origin-isolatedExperimental-
Kiểm soát xem tài liệu hiện tại có thể được coi là cách ly khác nguồn gốc hay không.
deferred-fetchExperimental-
Kiểm soát việc phân bổ hạn ngạch
fetchLater()của nguồn gốc cấp cao nhất. deferred-fetch-minimalExperimental-
Kiểm soát việc phân bổ hạn ngạch
fetchLater()được chia sẻ khung con khác nguồn gốc. display-captureExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng phương thức
getDisplayMedia()để chụp nội dung màn hình hay không. encrypted-mediaExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Encrypted Media Extensions API (EME) hay không.
fullscreenExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng
Element.requestFullscreen()hay không. gamepadExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Gamepad API hay không.
geolocationExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng giao diện
Geolocationhay không. gyroscopeExperimental-
Kiểm soát xem tài liệu hiện tại có được phép thu thập thông tin về hướng của thiết bị thông qua giao diện
Gyroscopehay không. hidExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng WebHID API để kết nối với các thiết bị giao diện người dùng không phổ biến hay không.
identity-credentials-getExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Federated Credential Management API (FedCM) hay không.
idle-detectionExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Idle Detection API để phát hiện khi người dùng đang tương tác với thiết bị của họ hay không.
language-detectorExperimental-
Kiểm soát quyền truy cập vào chức năng phát hiện ngôn ngữ của Translator and Language Detector APIs.
local-fontsExperimental-
Kiểm soát xem tài liệu hiện tại có được phép thu thập dữ liệu về phông chữ cục bộ đã cài đặt của người dùng thông qua phương thức
Window.queryLocalFonts()hay không. magnetometerExperimental-
Kiểm soát xem tài liệu hiện tại có được phép thu thập thông tin về hướng của thiết bị thông qua giao diện
Magnetometerhay không. microphoneExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng thiết bị đầu vào âm thanh hay không.
midiExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Web MIDI API hay không.
on-device-speech-recognitionExperimental-
Kiểm soát quyền truy cập vào chức năng nhận dạng giọng nói trên thiết bị của Web Speech API.
otp-credentialsExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng WebOTP API để yêu cầu mật khẩu một lần (OTP) hay không.
paymentExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Payment Request API hay không.
picture-in-pictureExperimental-
Kiểm soát xem tài liệu hiện tại có được phép phát video ở chế độ Picture-in-Picture thông qua API tương ứng hay không.
private-state-token-issuanceExperimental-
Kiểm soát việc sử dụng các thao tác private state token
token-request. private-state-token-redemptionExperimental-
Kiểm soát việc sử dụng các thao tác private state token
token-redemptionvàsend-redemption-record. publickey-credentials-createExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Web Authentication API để tạo thông tin xác thực khóa bất đối xứng mới hay không.
publickey-credentials-getExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Web Authentication API để lấy thông tin xác thực khóa công khai đã lưu hay không.
screen-wake-lockExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Screen Wake Lock API để chỉ báo rằng thiết bị không nên tắt hoặc làm mờ màn hình hay không.
serialExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Web Serial API để giao tiếp với các thiết bị nối tiếp hay không.
speaker-selectionExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Audio Output Devices API để liệt kê và chọn loa hay không.
storage-accessExperimental-
Kiểm soát xem tài liệu được tải trong ngữ cảnh bên thứ ba (tức là nhúng trong
<iframe>) có được phép sử dụng Storage Access API để yêu cầu quyền truy cập vào cookie không được phân vùng hay không. translatorExperimental-
Kiểm soát quyền truy cập vào chức năng dịch thuật của Translator and Language Detector APIs.
summarizerExperimental-
Kiểm soát quyền truy cập vào Summarizer API.
usbExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng WebUSB API hay không.
-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng
Navigator.share()của Web Share API để chia sẻ văn bản, liên kết, hình ảnh và nội dung khác hay không. window-managementExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng Window Management API để quản lý cửa sổ trên nhiều màn hình hay không.
xr-spatial-trackingExperimental-
Kiểm soát xem tài liệu hiện tại có được phép sử dụng WebXR Device API để tương tác với phiên WebXR hay không.
Ví dụ
>Sử dụng cơ bản
Tiêu đề Permissions-Policy
Để cho phép tất cả các nguồn gốc truy cập vào định vị địa lý, bạn làm điều này:
Permissions-Policy: geolocation=*
Hoặc để cho phép truy cập cho một tập hợp con các nguồn gốc, bạn làm điều này:
Permissions-Policy: geolocation=(self "https://a.example.com" "https://b.example.com")
Một số tính năng có thể được kiểm soát đồng thời bằng cách gửi tiêu đề với danh sách chính sách phân tách bằng dấu phẩy, hoặc bằng cách gửi tiêu đề riêng cho mỗi chính sách.
Ví dụ: sau đây là tương đương:
Permissions-Policy: picture-in-picture=(), geolocation=(self https://example.com/), camera=*
Permissions-Policy: picture-in-picture=()
Permissions-Policy: geolocation=(self https://example.com/)
Permissions-Policy: camera=*
iframe
Để <iframe> có tính năng được bật, nguồn gốc được phép của nó cũng phải có trong danh sách cho phép của trang cha. Do hành vi kế thừa này, nên chỉ định hỗ trợ rộng nhất có thể chấp nhận cho một tính năng trong tiêu đề HTTP, sau đó chỉ định tập con hỗ trợ bạn cần trong mỗi <iframe>.
Để cho phép tất cả các nguồn gốc truy cập vào định vị địa lý, bạn làm điều này:
<iframe src="https://example.com" allow="geolocation *"></iframe>
Để áp dụng chính sách cho nguồn gốc hiện tại và các nguồn gốc khác, bạn làm điều này:
<iframe
src="https://example.com"
allow="geolocation 'self' https://a.example.com https://b.example.com"></iframe>
Từ chối quyền truy cập vào các tính năng mạnh
SecureCorp Inc. muốn tắt Microphone (ví dụ: MediaDevices.getUserMedia()) và Geolocation APIs trong ứng dụng của mình. Họ có thể làm điều đó bằng tiêu đề phản hồi sau:
Permissions-Policy: microphone=(), geolocation=()
Bằng cách chỉ định () cho danh sách nguồn gốc, các tính năng được chỉ định sẽ bị vô hiệu hóa cho tất cả các ngữ cảnh duyệt web (bao gồm tất cả <iframe>), bất kể nguồn gốc của chúng.
Kết hợp tiêu đề HTTP và chính sách <iframe>
Ví dụ: giả sử chúng ta muốn bật sử dụng định vị địa lý trên nguồn gốc của chúng ta, và trong nội dung nhúng đến từ mạng quảng cáo đáng tin cậy của chúng ta. Chúng ta có thể thiết lập Chính sách quyền hạn toàn trang như sau:
Permissions-Policy: geolocation=(self https://trusted-ad-network.com)
Trong các <iframe> quảng cáo của chúng ta, chúng ta có thể đặt quyền truy cập vào nguồn gốc https://trusted-ad-network.com như sau:
<iframe src="https://trusted-ad-network.com" allow="geolocation"></iframe>
Đặc tả
| Specification |
|---|
| Permissions Policy> # permissions-policy-http-header-field> |