Tiện ích có thể lưu trữ cookie và truy cập API lưu trữ trên web tương tự như trang web thông thường. Tuy nhiên, trong một số trường hợp, các cách này hoạt động khác trong các tiện ích.
Hãy xem chrome.storage
để biết thông tin về API tiện ích.
Dung lượng lưu trữ
Thường thì bạn nên sử dụng API lưu trữ trên nền tảng web trong các tiện ích. Phần này tìm hiểu hành vi của các API này trong ngữ cảnh tiện ích. Điều này đôi khi có thể khác với cách hoạt động của các API trên web.
Khả năng lưu trữ dài lâu
Bộ nhớ tiện ích không bị xoá khi người dùng xoá dữ liệu duyệt web. Điều này áp dụng cho mọi dữ liệu được lưu trữ bằng API bộ nhớ web (chẳng hạn như Local Storage và IndexedDB).
Theo mặc định, các tiện ích phải tuân theo các hạn mức thông thường về hạn mức bộ nhớ. Bạn có thể kiểm tra các tiện ích này bằng cách gọi navigator.storage.estimate()
. Bộ nhớ cũng có thể bị loại bỏ do áp lực lớn về bộ nhớ, mặc dù điều này rất hiếm. Cách tránh tình trạng này:
- Yêu cầu quyền
"unlimitedStorage"
. Quyền này ảnh hưởng đến cả API tiện ích và API bộ nhớ web, đồng thời miễn trừ tiện ích khỏi cả các hạn chế về hạn mức và việc loại bỏ. - Hãy gọi
navigator.storage.persist()
để bảo vệ khỏi việc loại bỏ dữ liệu.
Bộ nhớ của tiện ích được dùng chung trên nguồn gốc của tiện ích, bao gồm cả trình chạy dịch vụ tiện ích, mọi trang tiện ích (bao gồm cả cửa sổ bật lên và bảng điều khiển bên) cũng như tài liệu ngoài màn hình. Trong tập lệnh nội dung, việc gọi API lưu trữ trên web sẽ truy cập dữ liệu từ trang lưu trữ nơi tập lệnh nội dung được chèn vào chứ không phải vào tiện ích.
Quyền truy cập vào trình chạy dịch vụ
API IndexedDB và Cache Storage (Bộ nhớ đệm) có thể truy cập được trong trình chạy dịch vụ. Tuy nhiên, Bộ nhớ cục bộ và Bộ nhớ phiên thì không.
Nếu bạn cần truy cập vào Bộ nhớ cục bộ hoặc Bộ nhớ phiên từ trình chạy dịch vụ, hãy sử dụng tài liệu ngoài màn hình.
Phân vùng
Phân vùng là nơi các khoá được đưa vào cho dữ liệu đã lưu trữ nhằm giới hạn nơi bạn có thể truy cập vào dữ liệu đó. Trước đây, bộ nhớ được khoá theo nguồn gốc.
Kể từ Chrome 115, tính năng phân vùng bộ nhớ sẽ mang đến những thay đổi về cách xác định khoá phân vùng để ngăn một số loại theo dõi trên nhiều trang web. Trong thực tế, điều này có nghĩa là nếu trang web A nhúng một iframe chứa trang web B, thì trang web B sẽ không thể truy cập vào cùng một bộ nhớ mà trang web thường có khi được điều hướng trực tiếp.
Để giảm thiểu tác động của việc này đối với các phần mở rộng, có hai trường hợp miễn trừ:
- Nếu một trang có lược đồ
chrome-extension://
được nhúng vào trang web bất kỳ, thì tính năng phân vùng bộ nhớ sẽ không áp dụng và tiện ích sẽ có quyền truy cập vào phân vùng cấp cao nhất. - Nếu một trang có lược đồ
chrome-extension://
bao gồm một iframe, và tiện ích có quyền lưu trữ đối với trang web mà tiện ích đó nhúng, thì trang web đó cũng sẽ có quyền truy cập vào phân vùng cấp cao nhất.
Bánh quy
Cookie cung cấp một cách lưu trữ cặp khoá-giá trị được liên kết với một miền và đường dẫn cụ thể. Các tập lệnh này có giá trị giới hạn trong các tiện ích, nhưng việc hiểu hành vi của các tiện ích này có thể hữu ích nếu bạn có một trường hợp sử dụng cụ thể hoặc đã đóng gói một tập lệnh của bên thứ ba sử dụng các tiện ích đó trong quá trình triển khai.
Cookie bảo mật
Thuộc tính cookie Secure
chỉ được hỗ trợ cho giao thức https://
. Do đó, các trang chrome-extension://
không thể đặt cookie bằng thuộc tính này.
Điều này cũng có nghĩa là các trang tiện ích không thể sử dụng các thuộc tính cookie khác nếu bắt buộc phải có thuộc tính Secure
:
Phân vùng và hành vi của SameSite
Những cookie được đặt trên trang chrome-extension:// luôn sử dụng SameSite=Lax
.
Do đó, cookie do một tiện ích đặt trên nguồn gốc riêng sẽ không bao giờ truy cập được trong khung và việc phân vùng là không liên quan.
Đối với cookie được liên kết với trang web của bên thứ ba, chẳng hạn như đối với trang web của bên thứ ba được tải trong một khung trên trang tiện ích hoặc yêu cầu được thực hiện từ trang tiện ích đến nguồn gốc của bên thứ ba, cookie sẽ hoạt động giống như web, ngoại trừ theo hai cách:
- Cookie của bên thứ ba không bao giờ bị chặn ngay cả trong các khung phụ nếu trang cấp cao nhất cho một thẻ nhất định là trang
chrome-extension://
. - Các yêu cầu từ một tiện ích gửi tới bên thứ ba sẽ được coi là cùng một trang web nếu tiện ích đó có quyền của máy chủ lưu trữ đối với bên thứ ba. Điều này có nghĩa là
SameSite=Strict
cookie có thể được gửi. Xin lưu ý rằng điều này chỉ áp dụng cho các yêu cầu mạng, không áp dụng cho hoạt động truy cập thông quadocument.cookie
trong JavaScript, và không áp dụng nếu cookie của bên thứ ba bị chặn.
Lưu ý rằng các chế độ cài đặt về cookie của bên thứ ba chịu ảnh hưởng của hoạt động của Hộp cát về quyền riêng tư và được điều chỉnh theo tiến trình.
API chrome.cookies
cung cấp quyền kiểm soát khoá phân vùng để sử dụng với từng phương thức API. Để biết thêm thông tin, hãy xem Tài liệu tham khảo API.