chrome.cookies

Mô tả

Sử dụng API chrome.cookies để truy vấn và sửa đổi cookie, đồng thời nhận thông báo khi cookie thay đổi.

Quyền

cookies

Tệp kê khai

Để sử dụng API cookie, bạn phải khai báo quyền "cookie" trong tệp kê khai, cùng với quyền máy chủ lưu trữ cho mọi máy chủ lưu trữ có cookie mà bạn muốn truy cập. Ví dụ:

{
  "name": "My extension",
  ...
  "host_permissions": [
    "*://*.google.com/"
  ],
  "permissions": [
    "cookies"
  ],
  ...
}

Phân vùng

Cookie được phân vùng cho phép một trang web đánh dấu rằng một số cookie nhất định phải được khoá theo nguồn gốc của khung cấp cao nhất. Điều này có nghĩa là nếu trang web A được nhúng bằng iframe trong trang web B và trang web C, thì cookie được phân vùng có thể có giá trị khác nhau trong mỗi trang web.

chrome.cookies không hỗ trợ phân vùng, nghĩa là tất cả các phương thức đều đọc và ghi cookie từ tất cả các phân vùng. Phương thức cookies.set() lưu trữ cookie trong phân vùng mặc định.

Để biết thông tin chi tiết về tác động chung của việc phân vùng cho các tiện ích, hãy xem phần Bộ nhớ và cookie.

Ví dụ

Bạn có thể tìm thấy một ví dụ đơn giản về cách sử dụng API cookie trong thư mục examples/api/cookies. Để biết các ví dụ khác và để được trợ giúp về cách xem mã nguồn, hãy xem phần Mẫu.

Loại

Biểu thị thông tin về cookie HTTP.

Thuộc tính

  • chuỗi

    Miền của cookie (ví dụ: "www.google.com", "example.com").

  • số không bắt buộc

    Ngày hết hạn của cookie dưới dạng số giây kể từ thời gian bắt đầu của hệ thống UNIX. Không được cung cấp cho cookie phiên.

  • boolean

    Đúng nếu cookie là cookie chỉ dành cho máy chủ lưu trữ (tức là máy chủ lưu trữ của yêu cầu phải khớp chính xác với miền của cookie).

  • boolean

    Đúng nếu cookie được đánh dấu là Chỉ HTTP (tức là các tập lệnh phía máy khách không thể truy cập vào cookie).

  • chuỗi

    Tên của cookie.

  • CookiePartitionKey không bắt buộc

    Chrome 119 trở lên

    Khoá phân vùng để đọc hoặc sửa đổi cookie có thuộc tính Phân vùng.

  • chuỗi

    Đường dẫn của cookie.

  • Chrome 51 trở lên

    Trạng thái cùng trang web của cookie (tức là liệu cookie có được gửi bằng các yêu cầu trên nhiều trang web hay không).

  • boolean

    Đúng nếu cookie được đánh dấu là Bảo mật (tức là phạm vi của cookie chỉ giới hạn ở các kênh bảo mật, thường là HTTPS).

  • boolean

    Đúng nếu cookie là cookie phiên, trái ngược với cookie cố định có ngày hết hạn.

  • chuỗi

    Mã của kho cookie chứa cookie này, như được cung cấp trong getAllCookieStores().

  • chuỗi

    Giá trị của cookie.

CookieDetails

Chrome 88 trở lên

Thông tin chi tiết để xác định cookie.

Thuộc tính

  • tên

    chuỗi

    Tên của cookie cần truy cập.

  • partitionKey

    CookiePartitionKey không bắt buộc

    Chrome 119 trở lên

    Khoá phân vùng để đọc hoặc sửa đổi cookie có thuộc tính Phân vùng.

  • storeId

    chuỗi không bắt buộc

    Mã nhận dạng của kho cookie để tìm cookie. Theo mặc định, kho cookie của ngữ cảnh thực thi hiện tại sẽ được sử dụng.

  • url

    chuỗi

    URL liên kết với cookie cần truy cập. Đối số này có thể là một URL đầy đủ, trong trường hợp đó, mọi dữ liệu theo sau đường dẫn URL (ví dụ: chuỗi truy vấn) sẽ bị bỏ qua. Nếu bạn không chỉ định quyền lưu trữ cho URL này trong tệp kê khai, thì lệnh gọi API sẽ không thành công.

CookiePartitionKey

Chrome 119 trở lên

Đại diện cho khoá phân vùng của cookie được phân vùng.

Thuộc tính

  • hasCrossSiteAncestor

    boolean không bắt buộc

    Chrome 130 trở lên

    Cho biết liệu cookie có được đặt trong ngữ cảnh nhiều trang web hay không. Điều này ngăn một trang web cấp cao nhất được nhúng trong bối cảnh trên nhiều trang web truy cập vào cookie do trang web cấp cao nhất đặt trong bối cảnh trên cùng một trang web.

  • topLevelSite

    chuỗi không bắt buộc

    Trang web cấp cao nhất có cookie được phân vùng.

CookieStore

Biểu thị một kho cookie trong trình duyệt. Ví dụ: cửa sổ ở chế độ ẩn danh sử dụng một kho cookie riêng biệt với cửa sổ không ở chế độ ẩn danh.

Thuộc tính

  • id

    chuỗi

    Giá trị nhận dạng duy nhất của kho cookie.

  • tabIds

    number[]

    Giá trị nhận dạng của tất cả các thẻ trình duyệt dùng chung bộ nhớ cookie này.

FrameDetails

Đang chờ xử lý

Thông tin chi tiết để xác định khung.

Thuộc tính

  • documentId

    chuỗi không bắt buộc

    Giá trị nhận dạng duy nhất của tài liệu. Nếu bạn cung cấp frameId và/hoặc tabId, thì các giá trị này sẽ được xác thực để khớp với tài liệu được tìm thấy theo mã tài liệu đã cung cấp.

  • frameId

    số không bắt buộc

    Giá trị nhận dạng duy nhất của khung trong thẻ.

  • tabId

    số không bắt buộc

    Giá trị nhận dạng duy nhất của thẻ chứa khung.

OnChangedCause

Chrome 44 trở lên

Lý do cơ bản đằng sau sự thay đổi của cookie. Nếu một cookie được chèn hoặc xoá thông qua lệnh gọi rõ ràng đến "chrome.cookies.remove", thì "cause" sẽ là "explicit" (rõ ràng). Nếu một cookie bị xoá tự động do hết hạn, thì "cause" sẽ là "expired". Nếu một cookie bị xoá do bị ghi đè bằng ngày hết hạn đã hết hạn, thì "cause" sẽ được đặt thành "expired_overwrite". Nếu một cookie bị xoá tự động do thu thập rác, thì "cause" sẽ là "evicted". Nếu một cookie bị xoá tự động do lệnh gọi "set" ghi đè cookie đó, thì "cause" sẽ là "overwrite". Hãy lập kế hoạch phản hồi cho phù hợp.

Enum

"bị xoá"

"expired"

"explicit"

"expired_overwrite"

"overwrite"

SameSiteStatus

Chrome 51 trở lên

Trạng thái "SameSite" của cookie (https://tools.ietf.org/html/draft-west-first-party-cookies). "no_restriction" tương ứng với cookie được đặt bằng "SameSite=None", "lax" tương ứng với "SameSite=Lax" và "strict" tương ứng với "SameSite=Strict". "unspecified" (không chỉ định) tương ứng với một cookie được đặt mà không có thuộc tính SameSite.

Enum

"no_restriction"

"lax"

"strict"

"unspecified"

Phương thức

get()

Promise
chrome.cookies.get(
  details: CookieDetails,
  callback?: function,
)

Truy xuất thông tin về một cookie. Nếu có nhiều cookie cùng tên cho một URL nhất định, thì cookie có đường dẫn dài nhất sẽ được trả về. Đối với các cookie có cùng độ dài đường dẫn, cookie có thời gian tạo sớm nhất sẽ được trả về.

Tham số

  • chi tiết
  • lệnh gọi lại

    hàm không bắt buộc

    Tham số callback có dạng như sau:

    (cookie?: Cookie) => void

    • Cookie không bắt buộc

      Chứa thông tin chi tiết về cookie. Tham số này sẽ có giá trị rỗng nếu không tìm thấy cookie như vậy.

Giá trị trả về

  • Promise<Cookie | undefined>

    Chrome 88 trở lên

    Lời hứa chỉ được hỗ trợ cho Tệp kê khai V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

getAll()

Promise
chrome.cookies.getAll(
  details: object,
  callback?: function,
)

Truy xuất tất cả cookie từ một kho cookie khớp với thông tin đã cho. Các cookie được trả về sẽ được sắp xếp, với những cookie có đường dẫn dài nhất được sắp xếp trước. Nếu nhiều cookie có cùng độ dài đường dẫn, thì những cookie có thời gian tạo sớm nhất sẽ được ưu tiên. Phương thức này chỉ truy xuất cookie cho các miền mà tiện ích có quyền lưu trữ.

Tham số

  • chi tiết

    đối tượng

    Thông tin để lọc cookie đang được truy xuất.

    • tên miền

      chuỗi không bắt buộc

      Hạn chế các cookie được truy xuất cho những cookie có miền khớp hoặc là miền con của miền này.

    • tên

      chuỗi không bắt buộc

      Lọc cookie theo tên.

    • partitionKey

      CookiePartitionKey không bắt buộc

      Chrome 119 trở lên

      Khoá phân vùng để đọc hoặc sửa đổi cookie có thuộc tính Phân vùng.

    • đường dẫn

      chuỗi không bắt buộc

      Chỉ cho phép truy xuất những cookie có đường dẫn khớp chính xác với chuỗi này.

    • bảo mật

      boolean không bắt buộc

      Lọc cookie theo thuộc tính Bảo mật.

    • phiên

      boolean không bắt buộc

      Lọc ra cookie theo phiên so với cookie cố định.

    • storeId

      chuỗi không bắt buộc

      Kho cookie để truy xuất cookie. Nếu bạn bỏ qua, hệ thống sẽ sử dụng kho cookie của ngữ cảnh thực thi hiện tại.

    • url

      chuỗi không bắt buộc

      Hạn chế các cookie được truy xuất ở những cookie khớp với URL đã cho.

  • lệnh gọi lại

    hàm không bắt buộc

    Tham số callback có dạng như sau:

    (cookies: Cookie[]) => void

    • cookie

      Tất cả cookie hiện có và chưa hết hạn khớp với thông tin cookie đã cho.

Giá trị trả về

  • Promise<Cookie[]>

    Chrome 88 trở lên

    Lời hứa chỉ được hỗ trợ cho Tệp kê khai V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

getAllCookieStores()

Promise
chrome.cookies.getAllCookieStores(
  callback?: function,
)

Liệt kê tất cả các kho cookie hiện có.

Tham số

  • lệnh gọi lại

    hàm không bắt buộc

    Tham số callback có dạng như sau:

    (cookieStores: CookieStore[]) => void

    • cookieStores

      Tất cả các kho cookie hiện có.

Giá trị trả về

  • Promise<CookieStore[]>

    Chrome 88 trở lên

    Lời hứa chỉ được hỗ trợ cho Tệp kê khai V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

getPartitionKey()

Lời hứa Đang chờ xử lý
chrome.cookies.getPartitionKey(
  details: FrameDetails,
  callback?: function,
)

Khoá phân vùng cho khung được chỉ định.

Tham số

  • chi tiết
  • lệnh gọi lại

    hàm không bắt buộc

    Tham số callback có dạng như sau:

    (details: object) => void

    • chi tiết

      đối tượng

      Chứa thông tin chi tiết về khoá phân vùng đã được truy xuất.

      • partitionKey

        Khoá phân vùng để đọc hoặc sửa đổi cookie có thuộc tính Phân vùng.

Giá trị trả về

  • Promise<object>

    Lời hứa chỉ được hỗ trợ cho Tệp kê khai V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

remove()

Promise
chrome.cookies.remove(
  details: CookieDetails,
  callback?: function,
)

Xoá cookie theo tên.

Tham số

  • chi tiết
  • lệnh gọi lại

    hàm không bắt buộc

    Tham số callback có dạng như sau:

    (details?: object) => void

    • chi tiết

      đối tượng không bắt buộc

      Chứa thông tin chi tiết về cookie đã bị xoá. Nếu không xoá được vì bất kỳ lý do gì, giá trị này sẽ là "rỗng" và runtime.lastError sẽ được đặt.

      • tên

        chuỗi

        Tên của cookie đã bị xoá.

      • partitionKey

        CookiePartitionKey không bắt buộc

        Chrome 119 trở lên

        Khoá phân vùng để đọc hoặc sửa đổi cookie có thuộc tính Phân vùng.

      • storeId

        chuỗi

        Mã của kho cookie đã xoá cookie.

      • url

        chuỗi

        URL liên kết với cookie đã bị xoá.

Giá trị trả về

  • Promise<object | undefined>

    Chrome 88 trở lên

    Lời hứa chỉ được hỗ trợ cho Tệp kê khai V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

set()

Promise
chrome.cookies.set(
  details: object,
  callback?: function,
)

Đặt một cookie bằng dữ liệu cookie đã cho; có thể ghi đè các cookie tương đương nếu có.

Tham số

  • chi tiết

    đối tượng

    Thông tin chi tiết về cookie đang được đặt.

    • tên miền

      chuỗi không bắt buộc

      Miền của cookie. Nếu bạn bỏ qua, cookie sẽ trở thành cookie chỉ dành cho máy chủ lưu trữ.

    • expirationDate

      số không bắt buộc

      Ngày hết hạn của cookie dưới dạng số giây kể từ thời gian bắt đầu của hệ thống UNIX. Nếu bạn bỏ qua, cookie này sẽ trở thành cookie phiên.

    • httpOnly

      boolean không bắt buộc

      Liệu cookie có được đánh dấu là HttpOnly hay không. Giá trị mặc định là false.

    • tên

      chuỗi không bắt buộc

      Tên của cookie. Để trống theo mặc định nếu bị bỏ qua.

    • partitionKey

      CookiePartitionKey không bắt buộc

      Chrome 119 trở lên

      Khoá phân vùng để đọc hoặc sửa đổi cookie có thuộc tính Phân vùng.

    • đường dẫn

      chuỗi không bắt buộc

      Đường dẫn của cookie. Giá trị mặc định là phần đường dẫn của tham số URL.

    • sameSite

      SameSiteStatus không bắt buộc

      Chrome 51 trở lên

      Trạng thái cùng trang web của cookie. Giá trị mặc định là "unspecified" (không chỉ định), tức là nếu bạn bỏ qua, cookie sẽ được đặt mà không chỉ định thuộc tính SameSite.

    • bảo mật

      boolean không bắt buộc

      Liệu cookie có được đánh dấu là Bảo mật hay không. Giá trị mặc định là false.

    • storeId

      chuỗi không bắt buộc

      Mã của kho cookie để đặt cookie. Theo mặc định, cookie được đặt trong kho cookie của ngữ cảnh thực thi hiện tại.

    • url

      chuỗi

      URI yêu cầu để liên kết với chế độ cài đặt của cookie. Giá trị này có thể ảnh hưởng đến các giá trị miền và đường dẫn mặc định của cookie đã tạo. Nếu bạn không chỉ định quyền lưu trữ cho URL này trong tệp kê khai, thì lệnh gọi API sẽ không thành công.

    • value

      chuỗi không bắt buộc

      Giá trị của cookie. Để trống theo mặc định nếu bị bỏ qua.

  • lệnh gọi lại

    hàm không bắt buộc

    Tham số callback có dạng như sau:

    (cookie?: Cookie) => void

    • Cookie không bắt buộc

      Chứa thông tin chi tiết về cookie đã được đặt. Nếu không cài đặt được vì lý do nào đó, thì giá trị này sẽ là "rỗng" và runtime.lastError sẽ được đặt.

Giá trị trả về

  • Promise<Cookie | undefined>

    Chrome 88 trở lên

    Lời hứa chỉ được hỗ trợ cho Tệp kê khai V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

Sự kiện

onChanged

chrome.cookies.onChanged.addListener(
  callback: function,
)

Được kích hoạt khi đặt hoặc xoá cookie. Trong một trường hợp đặc biệt, xin lưu ý rằng việc cập nhật thuộc tính của cookie được triển khai dưới dạng một quy trình gồm hai bước: trước tiên, cookie cần cập nhật sẽ bị xoá hoàn toàn, tạo một thông báo có "cause" (nguyên nhân) là "overwrite" (ghi đè). Sau đó, một cookie mới sẽ được ghi bằng các giá trị đã cập nhật, tạo một thông báo thứ hai có "cause" "explicit".

Tham số

  • lệnh gọi lại

    hàm

    Tham số callback có dạng như sau:

    (changeInfo: object) => void

    • changeInfo

      đối tượng

      • nguyên nhân

        Lý do cơ bản đằng sau sự thay đổi của cookie.

      • Thông tin về cookie đã được đặt hoặc xoá.

      • đã xóa

        boolean

        Đúng nếu một cookie đã bị xoá.