ฉันมี iframe บนหน้าของฉัน ในฐานะที่เป็น Safari บล็อกคุกกี้ของบุคคลที่สามฉันพยายามใช้ Storage Access API ตามที่แนะนำที่นี่ภายใต้ 'คำแนะนำสำหรับนักพัฒนา': https://webkit.org/blog/10218/full-third-party-cookie-blocking-and-more / . ฉันได้คัดลอกรหัสต่อไปนี้จากเอกสาร :
<script type="text/javascript">
window.addEventListener('load', () => {
document.getElementById('test-button').addEventListener('click', () => {
document.hasStorageAccess().then(hasAccess => {
console.log('hasAccess: ' + hasAccess);
if (!hasAccess) {
return document.requestStorageAccess();
}
}).then(_ => {
console.log('Now we have first-party storage access!');
document.cookie = "foo=bar";
console.log(`document.cookie: ${document.cookie}`);
}).catch(_ => {
console.log('error');
});
});
});
</script>
<button id="test-button">Test</button>
เอาต์พุตคอนโซลเบราว์เซอร์:
[Log] hasAccess: true
[Log] Now we have first-party storage access!
[Log] document.cookie:
อย่างที่คุณเห็นการบริจาคดูเหมือนจะสำเร็จ แต่ก็ยังไม่สามารถตั้งค่าคุกกี้ได้ ใครบ้างมีความคิดว่ามีอะไรผิดปกติ?
Safari เวอร์ชัน 13.0.1
แก้ไข:เอาท์พุทคอนโซลบน Safari 13.1:
[Log] hasAccess: false
[Log] error
หมายเหตุ:หน้าปิดล้อมเป็นiframe
แท็กธรรมดาที่มีการsrc
ชี้ไปที่หน้านี้
console.log('Now we have first-party storage access!');
มาในthen
ของrequestStorageAccess()
?