เข้าร่วมช่วงทดลองใช้จากต้นทางสำหรับการเข้าถึงพื้นที่เก็บข้อมูลที่ไม่ใช่คุกกี้ผ่าน Storage Access API

Helen Cho
Helen Cho
Ari Chivukula
Ari Chivukula

Chrome 115 เปิดตัวการเปลี่ยนแปลงใน Storage, Service Worker และ API การสื่อสารด้วยการแบ่งพาร์ติชันในบริบทของบุคคลที่สาม นอกจากจะมีการแยกโดยนโยบายต้นทางเดียวกันแล้ว API ที่ได้รับผลกระทบซึ่งใช้ในบริบทของบุคคลที่สามจะแยกออกโดยเว็บไซต์ของบริบทระดับบนสุดด้วย

เว็บไซต์ที่ไม่มีเวลารองรับการแบ่งพาร์ติชันพื้นที่เก็บข้อมูลของบุคคลที่สามจะสามารถเข้าร่วมการทดลองใช้การเลิกใช้งานเพื่อยกเลิกการแบ่งพาร์ติชันชั่วคราว (ทำการแยกต่อตามนโยบายต้นทางเดียวกัน แต่นำการแยกออกตามเว็บไซต์ระดับบนสุด) และกู้คืนลักษณะการทำงานก่อนหน้านี้ของพื้นที่เก็บข้อมูล, Service Worker และ API การสื่อสารในเนื้อหาที่ฝังในเว็บไซต์ของตน ช่วงทดลองใช้การเลิกใช้งานนี้กำลังจะหมดอายุพร้อมกับ Chrome 127 ที่เผยแพร่ในวันที่ 3 กันยายน 2024 โปรดทราบว่านี่จะแยกต่างหากจากช่วงทดลองใช้การเลิกใช้งานสําหรับการเข้าถึงคุกกี้ของบุคคลที่สาม ซึ่งมีไว้สําหรับการเข้าถึงพื้นที่เก็บข้อมูลเท่านั้น

สำหรับโซลูชันระยะยาวที่จะจัดการกับกรณีการใช้งานบางกรณีที่หยุดชะงักจากการแบ่งพาร์ติชันพื้นที่เก็บข้อมูลที่ไม่ใช่คุกกี้ของบุคคลที่สาม Chrome จึงเสนอความสามารถให้บุคคลที่สามขอการเข้าถึงพื้นที่เก็บข้อมูล/การสื่อสาร (ทั้งคุกกี้และไม่ใช่คุกกี้) ผ่าน Storage Access API (การจัดส่งของ Chrome 117) ซึ่งอนุญาตให้บุคคลที่สามขอสิทธิ์เข้าถึงคุกกี้อยู่แล้ว

ตั้งแต่ Chrome 120 เป็นต้นไป ข้อเสนอนี้จะพร้อมให้ทดลองผ่านช่วงทดลองใช้จากต้นทาง นักพัฒนาแอปควรเข้าร่วมช่วงทดลองใช้จากต้นทางนี้เพื่อประเมินวิธีที่โซลูชันที่เสนอช่วยแก้ปัญหาสำหรับ Use Case ของตน เพื่อให้แน่ใจว่าจะมีการเตรียมการก่อนที่ช่วงทดลองใช้การเลิกใช้งานจะสิ้นสุดลง

รายละเอียดช่วงทดลองใช้จากต้นทาง

เริ่มตั้งแต่ Chrome 120 เป็นต้นไป Chrome จะรองรับช่วงทดลองใช้ต้นทาง StorageAccessAPIBeyondCookies เพื่อเปิดใช้ส่วนขยายที่เสนอของ Storage Access API (เข้ากันได้แบบย้อนหลัง) เพื่ออนุญาตการเข้าถึงพื้นที่เก็บข้อมูลที่ไม่ได้แบ่งพาร์ติชัน (คุกกี้และไม่ใช่คุกกี้) ในบริบทของบุคคลที่สาม

เครื่องกล

API สามารถใช้ได้ดังต่อไปนี้ (JavaScript ทำงานใน iframe ที่ฝัง)

// Request a new storage handle via rSA (this should prompt the user)
const handle = await document.requestStorageAccess({all: true});
// Write some 1P context sessionStorage
handle.sessionStorage.setItem('userid', '1234');
// Write some 1P context localStorage
handle.localStorage.setItem('preference', 'A');
// Open or create an indexedDB that is shared with the 1P context
const messageDB = handle.indexedDB.open('messages');
// Use locks shared with the 1P context
await handle.locks.request('example', ...);

หากต้องการเข้าถึงเฉพาะ API ที่เฉพาะเจาะจงแทนสิทธิ์เข้าถึง all คุณสามารถส่งชื่อเฉพาะแฮนเดิล API ที่ต้องการได้ ตัวอย่างเช่น คุณสามารถส่ง {sessionStorage: true} เพื่อเข้าถึงพื้นที่เก็บข้อมูลเซสชัน หรือ {indexedDB: true, locks:true} เพื่อเข้าถึง IndexedDB และ Web Locks

นอกจากการเรียกใช้ส่วนขยายเพิ่มเติมนี้แล้ว สิทธิ์เข้าถึงพื้นที่เก็บข้อมูลที่ไม่ใช่คุกกี้จะตรงกับข้อกำหนดปัจจุบันสำหรับการเข้าถึงคุกกี้ผ่าน Storage Access API ตัวอย่างเช่น ใน Chrome ระบบจะไม่แสดงข้อความแจ้งเมื่อต้นทางอยู่ในชุดเว็บไซต์ที่เกี่ยวข้องเดียวกัน (RWS คือชื่อใหม่ของชุดบุคคลที่หนึ่ง) ต้นทางที่ไม่ได้เป็นส่วนหนึ่งของ RWS เดียวกันจะอยู่ภายใต้ข้อกำหนดของ Storage Access API ใน Chrome

ระยะเวลา

ช่วงทดลองใช้จากต้นทางจะพร้อมให้บริการตั้งแต่ Chrome 120 จนถึง Chrome 125 (หรือหลังวันที่ 6 สิงหาคม 2024 สำหรับทุกเวอร์ชัน)

ขอบเขต

มีเพียงพื้นที่เก็บข้อมูล DOM (เซสชันและพื้นที่เก็บข้อมูลในเครื่อง), DB ที่จัดทำดัชนีแล้ว และ Web Lock เท่านั้นที่จะพร้อมใช้งานใน Chrome 120

เพิ่มพื้นที่เก็บข้อมูลแคช, ระบบไฟล์ส่วนตัวต้นทาง, โควต้า, พื้นที่เก็บข้อมูล Blob และช่องที่ออกอากาศใน Chrome 121

มีการเพิ่มผู้ปฏิบัติงานที่แชร์และการควบคุมการรวมคุกกี้ใน Chrome 123

ผู้ปฏิบัติงานเฉพาะจะได้รับสิทธิ์เข้าถึงคุกกี้ที่ไม่ได้แบ่งพาร์ติชัน หากมีการเรียก requestStorageAccess ก่อนการสร้างผู้ปฏิบัติงานใน Chrome 120 (ไม่ต้องใช้แฮนเดิล Storage Access API)

เข้าร่วม

  1. ประเมินวิธีที่คุณใช้คุกกี้และพื้นที่เก็บข้อมูลที่ไม่ใช่คุกกี้ในบริบทของบุคคลที่สาม ตัวอย่างกรณีการใช้งานอาจช่วยให้ทราบว่าข้อเสนอนี้เหมาะกับความต้องการของคุณหรือไม่
  2. เปิดใช้ Chrome เวอร์ชัน 120 (ขึ้นไป) และตรวจสอบว่าได้เปิดใช้ Flag test-third-party-cookie-phaseout แล้ว
  3. หากต้องการทดสอบฟีเจอร์ในเครื่องโดยไม่ตั้งค่าโทเค็นการทดลองใช้ต้นทางก่อน คุณก็เปิดใช้ #enable-experimental-web-platform-features ในเบราว์เซอร์
    1. เมื่อทดสอบในเครื่องเสร็จแล้ว คุณสามารถลงทะเบียนเพื่อทดลองใช้ StorageAccessAPIBeyondCookies จากต้นทางและรับโทเค็นสําหรับโดเมนของคุณ โปรดดูวิธีการโดยละเอียดที่หัวข้อเริ่มต้นใช้งานช่วงทดลองใช้จากต้นทาง คู่มือการแก้ปัญหาการทดลองใช้ Chrome จากต้นทางจะมีรายการตรวจสอบฉบับเต็มเพื่อให้มั่นใจว่าโทเค็นมีการกำหนดค่าอย่างถูกต้อง
    2. ฝังโทเค็นช่วงทดลองใช้จากต้นทางดังกล่าวใน iframe ที่ต้องใช้แฮนเดิล Storage Access API ภายใน โดยใช้ส่วนหัว HTTP, เมตาแท็ก HTML หรือแบบเป็นโปรแกรม โปรดทราบว่าโทเค็นต้องฝังโดยเฟรมที่ต้องการใช้ API นี้ การฝังโทเค็นในเฟรมหลักจะไม่เปิดใช้ API ในเฟรมย่อย
  4. เรียกใช้ document.requestStorageAccess(...) เพื่อรับแฮนเดิล Storage Access API ใน iframe แบบข้ามเว็บไซต์ โปรดดูข้อกำหนดในการทำให้การเรียกใช้นี้สำเร็จในเอกสารประกอบของ Storage Access API
  5. ย้ายข้อมูลพื้นที่เก็บข้อมูลที่เกี่ยวข้องใน iframe เพื่อใช้แฮนเดิล Storage Access API หากมี เช่น การโทรไปที่ window.sessionStorage.setItem(...) จะกลายเป็น handle.sessionStorage.setItem(...)
  6. เปิดเว็บไซต์และยืนยันว่าแฮนเดิลการเข้าถึงพื้นที่เก็บข้อมูลทำงานตามที่ต้องการ
  7. หากต้องการหยุดเข้าร่วมช่วงทดลองใช้จากต้นทาง ให้นำโทเค็นที่คุณเพิ่มไว้ในขั้นตอนที่ 3 ออก
  8. ส่งความคิดเห็นหรือเพิ่มปัญหาที่พบไปยังที่เก็บ GitHub แบบไม่ใช่คุกกี้สำหรับ Storage Access API

การสาธิต: การใช้ Storage Access API เพื่อเข้าถึงพื้นที่เก็บข้อมูลในเครื่องที่ไม่ได้แบ่งพาร์ติชัน

การสาธิตต่อไปนี้แสดงวิธีการเข้าถึงช่องการออกอากาศที่ไม่ได้แบ่งพาร์ติชันจาก iframe ของบุคคลที่สามโดยใช้ Storage Access API

https://saa-beyond-cookies.glitch.me/

การสาธิตกำหนดให้ใช้ Chrome 121 ขึ้นไปที่เปิดใช้ Flag test-third-party-cookie-phaseout

แหล่งข้อมูลเพิ่มเติม