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