Document: requestStorageAccessFor() method
Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.
Phương thức requestStorageAccessFor() của giao diện Document cho phép các trang web cấp cao nhất yêu cầu quyền truy cập cookie bên thứ ba thay mặt cho nội dung nhúng có nguồn gốc từ một trang web khác trong cùng bộ trang web liên quan. Phương thức trả về một Promise sẽ giải quyết nếu quyền truy cập được cấp và từ chối nếu quyền truy cập bị từ chối.
Cú pháp
requestStorageAccessFor(requestedOrigin)
Tham số
requestedOrigin-
Một chuỗi đại diện cho URL của nguồn gốc bạn đang yêu cầu quyền truy cập cookie bên thứ ba.
Giá trị trả về
Một Promise thỏa mãn với undefined nếu quyền truy cập cookie bên thứ ba được cấp và từ chối nếu quyền truy cập bị từ chối.
Các yêu cầu requestStorageAccessFor() tự động bị từ chối trừ khi nội dung cấp cao nhất hiện đang xử lý một cử chỉ người dùng như nhấn hoặc nhấp (transient activation), hoặc trừ khi quyền đã được cấp trước đó. Nếu quyền chưa được cấp trước đó, chúng phải chạy bên trong một trình xử lý sự kiện dựa trên cử chỉ người dùng. Hành vi cử chỉ người dùng phụ thuộc vào trạng thái của promise:
- Nếu promise được giải quyết (tức là quyền được cấp), thì cử chỉ người dùng chưa bị tiêu thụ, do đó tập lệnh có thể gọi các API yêu cầu cử chỉ người dùng sau đó.
- Nếu promise bị từ chối (tức là quyền không được cấp), thì cử chỉ người dùng đã bị tiêu thụ, do đó tập lệnh không thể làm bất cứ điều gì yêu cầu một cử chỉ. Điều này ngăn các tập lệnh gọi lại
requestStorageAccessFor()nếu quyền bị từ chối.
Ngoại lệ
InvalidStateErrorDOMException-
Được ném nếu
Documenthiện tại chưa hoạt động. NotAllowedErrorDOMException-
Được ném nếu:
- Cửa sổ của tài liệu không phải là ngữ cảnh bảo mật.
- Tài liệu không phải là tài liệu cấp cao nhất.
- Tài liệu có nguồn gốc
null. requestedOriginđược cung cấp là opaque.- Các trang web cấp cao nhất và nhúng không nằm trong cùng bộ trang web liên quan.
<iframe>nhúng bị sandbox và tokenallow-storage-access-by-user-activationkhông được đặt.- Việc sử dụng bị chặn bởi
storage-accessPermissions Policy. - Việc sử dụng bị tác nhân người dùng từ chối bởi yêu cầu quyền sử dụng API.
TypeError-
Được ném nếu
requestedOriginkhông phải là một URL hợp lệ.
Mô tả
Phương thức requestStorageAccessFor() giải quyết các thách thức trong việc áp dụng Storage Access API trên các trang web cấp cao nhất sử dụng hình ảnh hoặc tập lệnh khác trang web yêu cầu cookie. Nó liên quan đến các tác nhân người dùng theo mặc định chặn quyền truy cập vào cookie bên thứ ba, không phân vùng để cải thiện quyền riêng tư (ví dụ: để ngăn chặn theo dõi), và là một phần mở rộng được đề xuất của Storage Access API.
requestStorageAccessFor() có thể cho phép truy cập cookie bên thứ ba cho các tài nguyên khác trang web được nhúng trực tiếp vào một trang web cấp cao nhất mà không thể tự yêu cầu quyền truy cập storage, ví dụ các phần tử <img>. Nội dung khác trang web được nhúng trong <iframe> có logic và tài nguyên riêng và cần quyền truy cập cookie bên thứ ba nên yêu cầu quyền truy cập storage thông qua Document.requestStorageAccess().
Để kiểm tra xem quyền truy cập cookie bên thứ ba đã được cấp thông qua requestStorageAccessFor() hay chưa, bạn có thể gọi Permissions.query(), chỉ định tên tính năng "top-level-storage-access". Điều này khác với tên tính năng được sử dụng cho phương thức Document.requestStorageAccess() thông thường, là "storage-access".
Lệnh gọi Permissions.query() phải chỉ định nguồn gốc nhúng; ví dụ:
navigator.permissions.query({
name: "top-level-storage-access",
requestedOrigin: "https://www.example.com",
});
Note:
Việc sử dụng tính năng này có thể bị chặn bởi storage-access Permissions Policy được đặt trên máy chủ của bạn (cùng một chính sách kiểm soát phần còn lại của Storage Access API). Ngoài ra, tài liệu phải vượt qua các kiểm tra cụ thể của trình duyệt như danh sách cho phép, danh sách chặn, phân loại trên thiết bị, cài đặt người dùng, hoặc heuristic chống-clickjacking.
Ví dụ
function rSAFor() {
if ("requestStorageAccessFor" in document) {
document.requestStorageAccessFor("https://example.com").then(
(res) => {
// Sử dụng quyền truy cập storage
doThingsWithCookies();
},
(err) => {
// Xử lý lỗi
},
);
}
}
Sau một lệnh gọi requestStorageAccessFor() thành công, các yêu cầu khác trang web sẽ bao gồm cookie nếu chúng bao gồm CORS / crossorigin, do đó các trang web có thể muốn đợi trước khi kích hoạt yêu cầu. Các yêu cầu như vậy phải sử dụng tùy chọn credentials: "include" và tài nguyên phải bao gồm thuộc tính crossorigin="use-credentials".
Ví dụ:
function checkCookie() {
fetch("https://example.com/getcookies.json", {
method: "GET",
credentials: "include",
})
.then((response) => response.json())
.then((json) => {
// Làm gì đó
});
}
Note: Xem Sử dụng Storage Access API để biết ví dụ đầy đủ hơn.
Đặc tả kỹ thuật
| Specification |
|---|
| requestStorageAccessFor API> # dom-document-requeststorageaccessfor> |