Tôi có một iframe trên trang của tôi. Vì Safari chặn cookie của bên thứ 3, tôi đang cố gắng sử dụng API truy cập lưu trữ như được đề xuất ở đây trong 'Hướng dẫn dành cho nhà phát triển': https://webkit.org/blog/10218/full-third-party-cookie-blocking-and-more / . Tôi đã sao chép mã sau đây từ tài liệu :
<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>
Đầu ra bảng điều khiển trình duyệt:
[Log] hasAccess: true
[Log] Now we have first-party storage access!
[Log] document.cookie:
Như bạn có thể thấy, khoản tài trợ dường như thành công nhưng vẫn không thể đặt cookie. Có ai có ý kiến gì không?
Phiên bản Safari 13.0.1
EDIT: Đầu ra giao diện điều khiển trên Safari 13.1:
[Log] hasAccess: false
[Log] error
Lưu ý: Trang kèm theo là một iframe
thẻ đơn giản với một src
trỏ đến trang này.
console.log('Now we have first-party storage access!');
đến trong then
các requestStorageAccess()
?