Bộ nhớ và cookie

Tiện ích có thể lưu trữ cookie và truy cập vào các API bộ nhớ web tương tự như một trang web thông thường. Tuy nhiên, trong một số trường hợp, các trường này hoạt động khác nhau trong các tiện ích.

Hãy xem browser.storage để biết thông tin về API tiện ích.

Bộ nhớ

Bạn nên sử dụng các API bộ nhớ nền tảng web trong tiện ích. Phần này khám phá hành vi của các API này trong bối cảnh tiện ích. Đôi khi, hành vi này có thể khác với cách các API này hoạt động trên web.

Khả năng lưu trữ dài lâu

Bộ nhớ của tiện ích sẽ 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ư Bộ nhớ cục bộIndexedDB).

Theo mặc định, các tiện ích phải tuân theo hạn mức thông thường về bộ nhớ. Bạn có thể kiểm tra hạn mức này bằng cách gọi navigator.storage.estimate(). Bộ nhớ cũng có thể bị loại bỏ trong trường hợp áp lực bộ nhớ lớn, mặc dù trường hợp này hiếm khi xảy ra. Cách tránh tình trạng này:

  • Yêu cầu cấp quyền "unlimitedStorage". Quyền này ảnh hưởng đến cả API bộ nhớ của tiện ích và API bộ nhớ trên web, đồng thời miễn cho tiện ích khỏi cả hạn mức và việc xoá.
  • Gọi đến số navigator.storage.persist() để được bảo vệ khỏi việc bị đuổi.

Bộ nhớ của tiện ích được chia sẻ trên nguồn gốc của tiện ích, bao gồm cả trình chạy dịch vụ của 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ư các tài liệu ngoài màn hình. Trong tập lệnh nội dung, việc gọi API bộ nhớ web sẽ truy cập vào dữ liệu từ trang lưu trữ mà tập lệnh nội dung được chèn vào chứ không phải tiện ích.

Quyền truy cập trong các worker dịch vụ

Bạn có thể truy cập vào các API IndexedDBCache Storage trong các worker dịch vụ. Tuy nhiên, Bộ nhớ cục bộ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 giới thiệu cho dữ liệu được lưu trữ để giới hạn nơi 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ẽ có những thay đổi về cách xác định khoá phân vùng để ngăn chặn một số loại hoạt động theo dõi trên nhiều trang web. Trên 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 này thường có khi được chuyển hướng trực tiếp.

Để giảm thiểu tác động của việc này trong các tiện ích, bạn có thể áp dụng 2 trường hợp miễn trừ:

  • Nếu một trang có lược đồ chrome-extension:// được nhúng vào bất kỳ trang web nào, 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 của trang đó.
  • Nếu một trang có lược đồ chrome-extension:// bao gồm một iframe và tiện ích có quyền truy cập vào máy chủ lưu trữ cho trang web mà tiện ích đang 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 của trang web.

Bánh quy

Cookie cung cấp một cách để lưu trữ các cặp khoá-giá trị được liên kết với một miền và đường dẫn cụ thể. Chúng có giá trị hạn chế trong các tiện ích, nhưng việc hiểu rõ hành vi của chúng có thể hữu ích nếu bạn có một trường hợp sử dụng cụ thể hoặc đã gói một tập lệnh của bên thứ ba sử dụng chúng trong quá trình triển khai.

Cookie an toàn

Thuộc tính cookie Secure chỉ được hỗ trợ cho lượ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 khi thuộc tính Secure là bắt buộc:

Phân vùng và hành vi của SameSite

Cookie được đặt trên các trang chrome-extension:// luôn sử dụng SameSite=Lax. Do đó, các cookie do một tiện ích đặt trên nguồn gốc của chính tiện ích đó sẽ không bao giờ có thể truy cập được trong các 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 các trang web của bên thứ ba, chẳng hạn như đối với một trang web của bên thứ ba được tải trong một khung trên trang tiện ích hoặc một 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 hoạt động giống như trên web, ngoại trừ 2 trường hợp sau:

  • Cookie của bên thứ ba sẽ 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 đến một bên thứ ba được coi là cùng trang web nếu tiện ích đó có quyền truy cập vào máy chủ lưu trữ của bên thứ ba. Điều này có nghĩa là cookie SameSite=Strict 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, chứ không áp dụng cho quyền truy cập thông qua document.cookie trong JavaScript và không áp dụng nếu cookie của bên thứ ba bị chặn.

Xin lưu ý rằng các chế độ cài đặt liên quan đến cookie của bên thứ ba sẽ chịu ảnh hưởng của hoạt động trong Hộp cát về quyền riêng tư và sẽ được điều chỉnh theo tiến trình của hoạt động này.

API browser.cookies cung cấp quyền kiểm soát đối với 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.