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

Helen Cho
Helen Cho
Ari Chivukula
Ari Chivukula

Chrome 115 เปิดตัวการเปลี่ยนแปลงใน API พื้นที่เก็บข้อมูล, Service Worker และการสื่อสารด้วยการแบ่งพาร์ติชันในบริบทของบุคคลที่สาม นอกจากการแยกตามนโยบายต้นทางเดียวกันแล้ว 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. เมื่อทดสอบในเครื่องเสร็จแล้ว คุณสามารถregisterเพื่อทดลองใช้ 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

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