我的页面上有一个 iframe。由于 Safari 阻止第 3 方 cookie,我正在尝试使用“开发人员指南”下建议的存储访问 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:
如您所见,授权似乎成功但仍然无法设置cookie。有谁知道出了什么问题?
Safari 版本 13.0.1
编辑: Safari 13.1 上的控制台输出:
[Log] hasAccess: false
[Log] error
注意:封闭页面是一个简单的iframe
标签,带有一个src
指向该页面的标签。