내 페이지에 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:
보시다시피, 보조금은 성공한 것으로 보이지만 여전히 쿠키를 설정할 수는 없습니다. 누구든지 무엇이 잘못되었는지 알고 있습니까?
사파리 버전 13.0.1
편집 : Safari 13.1의 콘솔 출력 :
[Log] hasAccess: false
[Log] error
참고 : 묶는 페이지는 이 페이지를 가리키는 간단한 iframe
태그입니다 src
.
1
나는 같은 문제가 있습니다. 스토리지 액세스는 기존 쿠키에 대한 액세스를 제공하는 것으로 보이지만 새 쿠키는 저장하지 않습니다. 이는 "document.cookie"및 "Set-Cookie"헤더에 반환 된 새 쿠키 사용에 적용됩니다. 설명서에는 작동해야한다고 말하지만 작동하지 않습니다.
—
Matt Cosentino
Safari 13.1에서는 요청이 거부되었지만 이유를 이해할 수 없었습니다.
—
lunr
예, 정말 실망 스럽습니다. BTW Safari 13.1은 동일하게 작동하기 시작했습니다. 액세스 권한은 있지만 쿠키 설정에 실패했습니다.
—
lunr
으로 이 문서를 지정 액세스 권한을 부여 몇 가지 규칙이 있습니다. 그리고,에
—
Supun Kavinda
console.log('Now we have first-party storage access!');
들어 와서 then
는 안 requestStorageAccess()
됩니까?
@SupunKavinda 처음 3 가지 규칙은 여기에 적용되지 않습니다. 나는 규칙 5를 완전히 이해하지 못한다. 아마도 도메인을 블랙리스트에 올린 다른 메커니즘을 언급하고있을 것이다. 나는 이것도 적용되지 않는다고 생각하지만 관련이 있는지 몇 가지를 시도 할 것입니다.
—
lunr