chrome.cookies

คำอธิบาย

ใช้ chrome.cookies API เพื่อค้นหาและแก้ไขคุกกี้ รวมถึงรับการแจ้งเตือนเมื่อมีการเปลี่ยนแปลง

สิทธิ์

cookies

หากต้องการใช้คุกกี้ API ให้ประกาศสิทธิ์ "cookies" ในไฟล์ Manifest พร้อมกับสิทธิ์ของโฮสต์สำหรับโฮสต์ใดก็ตามที่คุณต้องการเข้าถึงคุกกี้ เช่น

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

การแบ่งพาร์ติชัน

คุกกี้ที่แบ่งพาร์ติชันช่วยให้เว็บไซต์ทำเครื่องหมายว่าควรใช้คีย์คุกกี้บางรายการกับ ต้นทางของเฟรมระดับบนสุด ซึ่งหมายความว่า เช่น หากฝังเว็บไซต์ ก. โดยใช้ iframe ในเว็บไซต์ ข. และเว็บไซต์ ค. คุกกี้ที่แบ่งพาร์ติชันจาก ก. ที่ฝังไว้จะมีค่าแตกต่างกันใน ข. และ ค. ได้

โดยค่าเริ่มต้น เมธอด API ทั้งหมดจะทำงานกับคุกกี้ที่ไม่ได้แบ่งพาร์ติชัน คุณใช้พร็อพเพอร์ตี้ partitionKey เพื่อลบล้างลักษณะการทำงานนี้ได้

ดูรายละเอียดเกี่ยวกับผลกระทบทั่วไปของการแบ่งพาร์ติชันสำหรับส่วนขยายได้ที่พื้นที่เก็บข้อมูลและคุกกี้

ตัวอย่าง

คุณดูตัวอย่างการใช้คุกกี้ API แบบง่ายได้ในไดเรกทอรี examples/api/cookies ดูตัวอย่างอื่นๆ และความช่วยเหลือในการดู ซอร์สโค้ดได้ที่ตัวอย่าง

ประเภท

แสดงข้อมูลเกี่ยวกับคุกกี้ HTTP

พร็อพเพอร์ตี้

  • สตริง

    โดเมนของคุกกี้ (เช่น "www.google.com", "example.com")

  • หมายเลข ไม่บังคับ

    วันที่หมดอายุของคุกกี้เป็นจำนวนวินาทีนับตั้งแต่ Epoch ของ UNIX ไม่ได้ระบุสำหรับคุกกี้เซสชัน

  • บูลีน

    เป็นจริงหากคุกกี้เป็นคุกกี้เฉพาะโฮสต์ (เช่น โฮสต์ของคำขอต้องตรงกับโดเมนของคุกกี้ทุกประการ)

  • บูลีน

    จริงหากมีการทำเครื่องหมายคุกกี้เป็น HttpOnly (เช่น สคริปต์ฝั่งไคลเอ็นต์เข้าถึงคุกกี้ไม่ได้)

  • สตริง

    ชื่อของคุกกี้

  • CookiePartitionKey ไม่บังคับ

    Chrome 119 ขึ้นไป

    คีย์พาร์ติชันสำหรับการอ่านหรือแก้ไขคุกกี้ที่มีแอตทริบิวต์ Partitioned

  • สตริง

    เส้นทางของคุกกี้

  • Chrome 51 ขึ้นไป

    สถานะ SameSite ของคุกกี้ (เช่น มีการส่งคุกกี้พร้อมคำขอแบบข้ามเว็บไซต์หรือไม่)

  • บูลีน

    เป็นจริงหากมีการทำเครื่องหมายคุกกี้เป็น Secure (เช่น ขอบเขตจำกัดเฉพาะช่องทางที่ปลอดภัย ซึ่งโดยทั่วไปคือ HTTPS)

  • บูลีน

    เป็นจริงหากคุกกี้เป็นคุกกี้เซสชัน ซึ่งตรงข้ามกับคุกกี้ถาวรที่มีวันที่หมดอายุ

  • สตริง

    รหัสของที่เก็บคุกกี้ที่มีคุกกี้นี้ ตามที่ระบุไว้ใน getAllCookieStores()

  • สตริง

    ค่าของคุกกี้

CookieDetails

Chrome 88 ขึ้นไป

รายละเอียดเพื่อระบุคุกกี้

พร็อพเพอร์ตี้

  • ชื่อ

    สตริง

    ชื่อของคุกกี้ที่จะเข้าถึง

  • partitionKey

    CookiePartitionKey ไม่บังคับ

    Chrome 119 ขึ้นไป

    คีย์พาร์ติชันสำหรับการอ่านหรือแก้ไขคุกกี้ที่มีแอตทริบิวต์ Partitioned

  • storeId

    สตริง ไม่บังคับ

    รหัสของที่เก็บคุกกี้ที่จะใช้ค้นหาคุกกี้ โดยค่าเริ่มต้น ระบบจะใช้ที่เก็บคุกกี้ของบริบทการดำเนินการปัจจุบัน

  • URL

    สตริง

    URL ที่เชื่อมโยงกับคุกกี้ที่จะเข้าถึง อาร์กิวเมนต์นี้อาจเป็น URL แบบเต็ม ในกรณีนี้ระบบจะไม่สนใจข้อมูลใดๆ ที่อยู่หลังเส้นทาง URL (เช่น สตริงการค้นหา) หากไม่ได้ระบุสิทธิ์ของโฮสต์สำหรับ URL นี้ในไฟล์ Manifest การเรียก API จะไม่สำเร็จ

CookiePartitionKey

Chrome 119 ขึ้นไป

แสดงคีย์พาร์ติชันของคุกกี้ที่แบ่งพาร์ติชัน

พร็อพเพอร์ตี้

  • hasCrossSiteAncestor

    บูลีน ไม่บังคับ

    Chrome 130 ขึ้นไป

    ระบุว่ามีการตั้งค่าคุกกี้ในบริบทข้ามเว็บไซต์หรือไม่ ซึ่งจะป้องกันไม่ให้เว็บไซต์ระดับบนสุดที่ฝังอยู่ในบริบทข้ามเว็บไซต์เข้าถึงคุกกี้ที่เว็บไซต์ระดับบนสุดตั้งค่าไว้ในบริบทของเว็บไซต์เดียวกัน

  • topLevelSite

    สตริง ไม่บังคับ

    เว็บไซต์ระดับบนสุดที่คุกกี้ที่แบ่งพาร์ติชันพร้อมใช้งาน

CookieStore

แสดงที่เก็บคุกกี้ในเบราว์เซอร์ เช่น หน้าต่างโหมดไม่ระบุตัวตนจะใช้ที่เก็บคุกกี้แยกต่างหากจากหน้าต่างที่ไม่ใช่โหมดไม่ระบุตัวตน

พร็อพเพอร์ตี้

  • id

    สตริง

    ตัวระบุที่ไม่ซ้ำกันสำหรับที่เก็บคุกกี้

  • tabIds

    number[]

    ตัวระบุของแท็บเบราว์เซอร์ทั้งหมดที่ใช้ที่เก็บคุกกี้นี้ร่วมกัน

FrameDetails

Chrome 132 ขึ้นไป

รายละเอียดในการระบุเฟรม

พร็อพเพอร์ตี้

  • documentId

    สตริง ไม่บังคับ

    ตัวระบุที่ไม่ซ้ำกันสำหรับเอกสาร หากมีการระบุ frameId และ/หรือ tabId ระบบจะตรวจสอบว่าตรงกับเอกสารที่พบตามรหัสเอกสารที่ระบุหรือไม่

  • frameId

    หมายเลข ไม่บังคับ

    ตัวระบุที่ไม่ซ้ำกันสำหรับเฟรมภายในแท็บ

  • tabId

    หมายเลข ไม่บังคับ

    ตัวระบุที่ไม่ซ้ำกันสำหรับแท็บที่มีเฟรม

OnChangedCause

Chrome 44 ขึ้นไป

เหตุผลเบื้องหลังการเปลี่ยนแปลงคุกกี้ หากมีการแทรกหรือนำคุกกี้ออกผ่านการเรียก "chrome.cookies.remove" อย่างชัดเจน "สาเหตุ" จะเป็น "explicit" หากระบบนำคุกกี้ออกโดยอัตโนมัติเนื่องจากหมดอายุ "สาเหตุ" จะเป็น "หมดอายุ" หากมีการนำคุกกี้ออกเนื่องจากมีการเขียนทับด้วยวันที่หมดอายุที่หมดอายุไปแล้ว ระบบจะตั้งค่า "สาเหตุ" เป็น "expired_overwrite" หากระบบนำคุกกี้ออกโดยอัตโนมัติเนื่องจากการเก็บขยะ "สาเหตุ" จะเป็น "ถูกนำออก" หากระบบนำคุกกี้ออกโดยอัตโนมัติเนื่องจากการเรียก "set" ที่เขียนทับคุกกี้ "สาเหตุ" จะเป็น "เขียนทับ" วางแผนการตอบกลับตามความเหมาะสม

ค่าแจกแจง

"ถูกขับไล่"

"หมดอายุ"

"โจ่งแจ้ง"

"expired_overwrite"

"เขียนทับ"

SameSiteStatus

Chrome 51 ขึ้นไป

สถานะ "SameSite" ของคุกกี้ (https://tools.ietf.org/html/draft-west-first-party-cookies) "no_restriction" สอดคล้องกับคุกกี้ที่ตั้งค่าเป็น "SameSite=None", "lax" สอดคล้องกับ "SameSite=Lax" และ "strict" สอดคล้องกับ "SameSite=Strict" "ไม่ได้ระบุ" สอดคล้องกับคุกกี้ที่ตั้งค่าโดยไม่มีแอตทริบิวต์ SameSite

ค่าแจกแจง

"no_restriction"

"lax"

"เข้มงวด"

"unspecified"

เมธอด

get()

chrome.cookies.get(
  details: CookieDetails,
)
: Promise<Cookie | undefined>

เรียกข้อมูลเกี่ยวกับคุกกี้รายการเดียว หากมีคุกกี้ที่มีชื่อเดียวกันมากกว่า 1 รายการสำหรับ URL ที่ระบุ ระบบจะแสดงผลคุกกี้ที่มีเส้นทางยาวที่สุด สำหรับคุกกี้ที่มีความยาวเส้นทางเท่ากัน ระบบจะแสดงคุกกี้ที่สร้างขึ้นเร็วที่สุด

พารามิเตอร์

การคืนสินค้า

  • Promise<Cookie | undefined>

    Chrome 88 ขึ้นไป

getAll()

chrome.cookies.getAll(
  details: object,
)
: Promise<Cookie[]>

ซึ่งจะเรียกข้อมูลคุกกี้ทั้งหมดจากที่เก็บคุกกี้รายการเดียวที่ตรงกับข้อมูลที่ระบุ ระบบจะจัดเรียงคุกกี้ที่แสดงผล โดยคุกกี้ที่มีเส้นทางยาวที่สุดจะอยู่ก่อน หากคุกกี้หลายรายการมีความยาวเส้นทางเท่ากัน คุกกี้ที่มีเวลาสร้างเร็วที่สุดจะแสดงก่อน วิธีนี้จะดึงคุกกี้สำหรับโดเมนที่ส่วนขยายมีสิทธิ์เข้าถึงโฮสต์เท่านั้น

พารามิเตอร์

  • รายละเอียด

    ออบเจ็กต์

    ข้อมูลในการกรองคุกกี้ที่ดึงข้อมูล

    • โดเมน

      สตริง ไม่บังคับ

      จำกัดคุกกี้ที่เรียกข้อมูลให้เฉพาะคุกกี้ที่มีโดเมนตรงกันหรือเป็นโดเมนย่อยของโดเมนนี้

    • ชื่อ

      สตริง ไม่บังคับ

      กรองคุกกี้ตามชื่อ

    • partitionKey

      CookiePartitionKey ไม่บังคับ

      Chrome 119 ขึ้นไป

      คีย์พาร์ติชันสำหรับการอ่านหรือแก้ไขคุกกี้ที่มีแอตทริบิวต์ Partitioned

    • เส้นทาง

      สตริง ไม่บังคับ

      จำกัดคุกกี้ที่เรียกข้อมูลให้เป็นคุกกี้ที่มีเส้นทางตรงกับสตริงนี้

    • ปลอดภัย

      บูลีน ไม่บังคับ

      กรองคุกกี้ตามพร็อพเพอร์ตี้ Secure

    • เซสชัน

      บูลีน ไม่บังคับ

      กรองคุกกี้เซสชันเทียบกับคุกกี้ถาวร

    • storeId

      สตริง ไม่บังคับ

      ที่เก็บคุกกี้ที่จะดึงคุกกี้จาก หากละไว้ ระบบจะใช้ที่เก็บคุกกี้ของบริบทการดำเนินการปัจจุบัน

    • URL

      สตริง ไม่บังคับ

      จำกัดคุกกี้ที่เรียกข้อมูลให้เป็นคุกกี้ที่ตรงกับ URL ที่ระบุ

การคืนสินค้า

  • Promise<Cookie[]>

    Chrome 88 ขึ้นไป

getAllCookieStores()

chrome.cookies.getAllCookieStores(): Promise<CookieStore[]>

แสดงรายการที่เก็บคุกกี้ทั้งหมดที่มีอยู่

การคืนสินค้า

getPartitionKey()

Chrome 132 ขึ้นไป
chrome.cookies.getPartitionKey(
  details: FrameDetails,
)
: Promise<object>

คีย์พาร์ติชันสำหรับเฟรมที่ระบุ

พารามิเตอร์

การคืนสินค้า

  • Promise<object>

remove()

chrome.cookies.remove(
  details: CookieDetails,
)
: Promise<object | undefined>

ลบคุกกี้ตามชื่อ

พารามิเตอร์

การคืนสินค้า

  • Promise<object | undefined>

    Chrome 88 ขึ้นไป

set()

chrome.cookies.set(
  details: object,
)
: Promise<Cookie | undefined>

ตั้งค่าคุกกี้โดยใช้ข้อมูลคุกกี้ที่ระบุ และอาจเขียนทับคุกกี้ที่เทียบเท่าหากมี

พารามิเตอร์

  • รายละเอียด

    ออบเจ็กต์

    รายละเอียดเกี่ยวกับคุกกี้ที่กำลังตั้งค่า

    • โดเมน

      สตริง ไม่บังคับ

      โดเมนของคุกกี้ หากไม่ระบุ คุกกี้จะกลายเป็นคุกกี้เฉพาะโฮสต์

    • expirationDate

      หมายเลข ไม่บังคับ

      วันที่หมดอายุของคุกกี้เป็นจำนวนวินาทีนับตั้งแต่ Epoch ของ UNIX หากไม่ระบุ คุกกี้จะกลายเป็นคุกกี้เซสชัน

    • httpOnly

      บูลีน ไม่บังคับ

      ควรทำเครื่องหมายคุกกี้เป็น HttpOnly หรือไม่ ค่าเริ่มต้นคือ false

    • ชื่อ

      สตริง ไม่บังคับ

      ชื่อของคุกกี้ เว้นว่างไว้โดยค่าเริ่มต้นหากละไว้

    • partitionKey

      CookiePartitionKey ไม่บังคับ

      Chrome 119 ขึ้นไป

      คีย์พาร์ติชันสำหรับการอ่านหรือแก้ไขคุกกี้ที่มีแอตทริบิวต์ Partitioned

    • เส้นทาง

      สตริง ไม่บังคับ

      เส้นทางของคุกกี้ ค่าเริ่มต้นจะเป็นส่วนเส้นทางของพารามิเตอร์ URL

    • sameSite

      SameSiteStatus ไม่บังคับ

      Chrome 51 ขึ้นไป

      สถานะ SameSite ของคุกกี้ ค่าเริ่มต้นคือ "unspecified" กล่าวคือ หากละเว้น ระบบจะตั้งค่าคุกกี้โดยไม่ระบุแอตทริบิวต์ SameSite

    • ปลอดภัย

      บูลีน ไม่บังคับ

      ควรทำเครื่องหมายคุกกี้เป็น Secure หรือไม่ ค่าเริ่มต้นคือ false

    • storeId

      สตริง ไม่บังคับ

      รหัสของที่เก็บคุกกี้ที่จะตั้งค่าคุกกี้ โดยค่าเริ่มต้น ระบบจะตั้งค่าคุกกี้ในที่เก็บคุกกี้ของบริบทการดำเนินการปัจจุบัน

    • URL

      สตริง

      URI คำขอที่จะเชื่อมโยงกับการตั้งค่าคุกกี้ ค่านี้อาจส่งผลต่อค่าโดเมนและเส้นทางเริ่มต้นของคุกกี้ที่สร้างขึ้น หากไม่ได้ระบุสิทธิ์ของโฮสต์สำหรับ URL นี้ในไฟล์ Manifest การเรียก API จะไม่สำเร็จ

    • value

      สตริง ไม่บังคับ

      ค่าของคุกกี้ เว้นว่างไว้โดยค่าเริ่มต้นหากละไว้

การคืนสินค้า

  • Promise<Cookie | undefined>

    Chrome 88 ขึ้นไป

กิจกรรม

onChanged

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

ทริกเกอร์เมื่อมีการตั้งค่าหรือนำคุกกี้ออก ในกรณีพิเศษ โปรดทราบว่าการอัปเดตพร็อพเพอร์ตี้ของคุกกี้จะดำเนินการเป็น 2 ขั้นตอน โดยขั้นแรก ระบบจะนำคุกกี้ที่จะอัปเดตออกทั้งหมด ซึ่งจะสร้างการแจ้งเตือนที่มี "สาเหตุ" เป็น "เขียนทับ" หลังจากนั้น ระบบจะเขียนคุกกี้ใหม่โดยใช้ค่าที่อัปเดตแล้ว ซึ่งจะสร้างการแจ้งเตือนที่ 2 โดยมี "สาเหตุ" เป็น "โจ่งแจ้ง"

พารามิเตอร์

  • callback

    ฟังก์ชัน

    พารามิเตอร์ callback มีลักษณะดังนี้

    (changeInfo: object) => void

    • changeInfo

      ออบเจ็กต์

      • สาเหตุ

        เหตุผลเบื้องหลังการเปลี่ยนแปลงคุกกี้

      • ข้อมูลเกี่ยวกับคุกกี้ที่ตั้งค่าหรือนำออก

      • ลบแล้ว

        บูลีน

        เป็นจริงหากมีการนำคุกกี้ออก