Ho un iframe sulla mia pagina. Poiché Safari blocca i cookie di terze parti, sto cercando di utilizzare l'API di accesso allo storage come suggerito qui sotto "Guida per gli sviluppatori": https://webkit.org/blog/10218/full-third-party-cookie-blocking-and-more / . Ho copiato il seguente codice dalla documentazione :
<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>
Output della console del browser:
[Log] hasAccess: true
[Log] Now we have first-party storage access!
[Log] document.cookie:
Come puoi vedere, la concessione sembra avere successo ma non è ancora possibile impostare il cookie. Qualcuno ha un'idea di cosa non va?
Safari Versione 13.0.1
EDIT: output della console su Safari 13.1:
[Log] hasAccess: false
[Log] error
Nota: la pagina allegata è un semplice iframe
tag con un src
puntamento a questa pagina.
console.log('Now we have first-party storage access!');
venire in then
su requestStorageAccess()
?