พื้นที่เก็บข้อมูลและคุกกี้

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

ดูข้อมูลเกี่ยวกับ Extension API ได้ที่ browser.storage

พื้นที่เก็บข้อมูล

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

ความต่อเนื่อง

ระบบจะไม่ล้างพื้นที่เก็บข้อมูลของส่วนขยายเมื่อผู้ใช้ล้างข้อมูลการท่องเว็บ ซึ่งจะมีผลกับข้อมูลทั้งหมดที่จัดเก็บโดยใช้ Web Storage API (เช่น Local Storage และ IndexedDB)

โดยค่าเริ่มต้น ส่วนขยายจะอยู่ภายใต้ข้อจำกัดของโควต้าปกติในการจัดเก็บ ซึ่งสามารถตรวจสอบได้โดยการเรียกใช้ navigator.storage.estimate() นอกจากนี้ ระบบยังอาจนำพื้นที่เก็บข้อมูลออกภายใต้ แรงกดดันด้านหน่วยความจำสูง แม้ว่ากรณีนี้จะเกิดขึ้นได้ยาก วิธีหลีกเลี่ยงปัญหานี้

  • ขอสิทธิ์ "unlimitedStorage" ซึ่งส่งผลต่อทั้ง API ของส่วนขยายและพื้นที่เก็บข้อมูลบนเว็บ และ ยกเว้นส่วนขยายจากทั้งข้อจำกัดด้านโควต้าและการนำออก
  • โทรหา navigator.storage.persist() เพื่อขอรับการคุ้มครองจากการถูกขับไล่

พื้นที่เก็บข้อมูลของส่วนขยายจะแชร์ในแหล่งที่มาของส่วนขยาย ซึ่งรวมถึง Service Worker ของส่วนขยาย หน้าส่วนขยาย (รวมถึงป๊อปอัปและแผงด้านข้าง) และเอกสารนอกหน้าจอ ในสคริปต์เนื้อหา การเรียกใช้ Web Storage API จะเข้าถึงข้อมูลจากหน้าโฮสต์ที่สคริปต์เนื้อหาได้รับการแทรก ไม่ใช่ส่วนขยาย

การเข้าถึงใน Service Worker

API ของ IndexedDB และ Cache Storage สามารถเข้าถึงได้ใน Service Worker แต่ Local Storage และ Session Storage จะไม่ถูกล้าง

หากต้องการเข้าถึง Local Storage หรือ Session Storage จาก Service Worker ให้ใช้เอกสารนอกหน้าจอ

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

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

ตั้งแต่ Chrome 115 เป็นต้นไป การแบ่งพาร์ติชันพื้นที่เก็บข้อมูลจะมีการเปลี่ยนแปลงวิธี กำหนดคีย์การแบ่งพาร์ติชันเพื่อป้องกันการติดตามข้ามเว็บไซต์บางประเภท ในทางปฏิบัติ หมายความว่าหากเว็บไซต์ ก ฝัง iframe ที่มีเว็บไซต์ ข เว็บไซต์ ข จะเข้าถึงพื้นที่เก็บข้อมูลเดียวกันกับที่มักจะมีเมื่อนำทางไปยังเว็บไซต์ ข โดยตรงไม่ได้

เพื่อลดผลกระทบของเรื่องนี้ในส่วนขยาย จึงมีข้อยกเว้น 2 ข้อดังนี้

  • หากมีการฝังหน้าเว็บที่มีสคีมา chrome-extension:// ในเว็บไซต์ใดก็ตาม การแบ่งพาร์ติชันพื้นที่เก็บข้อมูลจะไม่มีผล และส่วนขยายจะมีสิทธิ์เข้าถึงพาร์ติชันระดับบนสุดของตัวเอง
  • หากหน้าเว็บที่มีสคีมา chrome-extension:// มี iframe และส่วนขยายมีสิทธิ์เข้าถึงโฮสต์สำหรับเว็บไซต์ที่ฝังอยู่ เว็บไซต์นั้นจะมีสิทธิ์เข้าถึงพาร์ติชันระดับบนสุดด้วย

คุกกี้

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

คุกกี้ที่ปลอดภัย

แอตทริบิวต์คุกกี้ Secure รองรับเฉพาะสคีมา https:// ด้วยเหตุนี้ หน้า chrome-extension:// จึงตั้งค่าคุกกี้ด้วยแอตทริบิวต์นี้ไม่ได้

นอกจากนี้ยังหมายความว่าหน้าส่วนขยายไม่สามารถใช้แอตทริบิวต์คุกกี้อื่นๆ ที่ต้องใช้แอตทริบิวต์ Secure ได้

การแบ่งพาร์ติชันและการทำงานของ SameSite

คุกกี้ที่ตั้งค่าในหน้า chrome-extension:// จะใช้ SameSite=Lax เสมอ ด้วยเหตุนี้ คุกกี้ที่ส่วนขยายตั้งค่าในต้นทางของตัวเองจึงไม่สามารถเข้าถึงได้ในเฟรม และการแบ่งพาร์ติชันจึงไม่เกี่ยวข้อง

สำหรับคุกกี้ที่เชื่อมโยงกับเว็บไซต์ของบุคคลที่สาม เช่น สำหรับเว็บไซต์ของบุคคลที่สาม ที่โหลดในเฟรมในหน้าส่วนขยาย หรือคำขอที่ส่งจากหน้าส่วนขยาย ไปยังต้นทางของบุคคลที่สาม คุกกี้จะทํางานเหมือนกับในเว็บ ยกเว้นใน 2 กรณีต่อไปนี้

  • ระบบจะไม่บล็อกคุกกี้ของบุคคลที่สามแม้ในเฟรมย่อย หากหน้าเว็บระดับบนสุด สำหรับแท็บที่กำหนดเป็นหน้าเว็บ chrome-extension://
  • คำขอจากส่วนขยายไปยังบุคคลที่สามจะถือว่าเป็นคำขอแบบเว็บไซต์เดียวกัน หากส่วนขยายมีสิทธิ์เข้าถึงโฮสต์สำหรับบุคคลที่สาม ซึ่งหมายความว่าSameSite=Strict สามารถส่งคุกกี้ได้ โปรดทราบว่าการดำเนินการนี้มีผลกับคำขอเครือข่ายเท่านั้น ไม่ใช่การเข้าถึงผ่าน document.cookie ใน JavaScript และจะไม่มีผลหากมีการบล็อกคุกกี้ของบุคคลที่สาม

โปรดทราบว่าการตั้งค่าเกี่ยวกับคุกกี้ของบุคคลที่สามได้รับผลกระทบจากงานของ Privacy Sandbox และจะปรับตามไทม์ไลน์

API browser.cookies ช่วยให้ควบคุมคีย์การแบ่งพาร์ติชันที่จะใช้กับแต่ละเมธอด API ได้ ดูข้อมูลเพิ่มเติมได้ที่เอกสารอ้างอิง API