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)
เข้าร่วม
- ประเมินวิธีใช้คุกกี้และพื้นที่เก็บข้อมูลที่ไม่ใช้คุกกี้ในบริบทของบุคคลที่สาม ตัวอย่างกรณีการใช้งานอาจช่วยให้ทราบว่าข้อเสนอนี้เหมาะกับความต้องการของคุณหรือไม่
- เปิดใช้ Chrome เวอร์ชัน 120 (ขึ้นไป) และตรวจสอบว่าได้เปิดใช้ Flag test-third-party-cookie-phaseout แล้ว
- หากต้องการทดสอบฟีเจอร์ในเครื่องโดยไม่ตั้งค่าโทเค็นการทดลองใช้ต้นทางก่อน คุณก็เปิดใช้ #enable-experimental-web-platform-features ในเบราว์เซอร์
- เมื่อทดสอบในเครื่องเสร็จแล้ว คุณสามารถregisterเพื่อทดลองใช้ 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