【发布时间】:2020-05-22 19:27:15
【问题描述】:
我客户的站点 (siteA.com) 显示来自远程服务 (forms.siteB.com) 的表单。除了 iOS 和 macOS 上的 Safari 之外,该表单在所有浏览器中都能正确加载。在 Safari 中,会显示以下 cookie 通知: 您的浏览器当前设置为阻止 cookie。您必须先更改浏览器设置以允许使用 cookie,然后才能填写此表格。完成后您可以恢复设置。
据我所知,Safari 正在使用 ITP 并阻止第三方 cookie。我一直在阅读有关存储会话 API (https://webkit.org/blog/8124/introducing-storage-access-api/) 的信息,但不确定它是否会提供解决方案。表单的iframe代码包括sandbox="allow-storage-access-by-user-activation allow-scripts allow-same-origin",我看过如下代码:
<script>
function makeRequestWithUserGesture() {
var promise = document.requestStorageAccess();
promise.then(
function () {
// Storage access was granted.
},
function () {
// Storage access was denied.
}
);
}
</script>
<button onclick="makeRequestWithUserGesture()">Play video</button>
我不确定这是否适用于允许 iframe 从第三方网站加载。它确实适用于用于嵌入 Google Doc 表单的 iframe。有谁知道 Google 是否做了一些特别的事情来使嵌入式表单能够跨域设置 cookie?
【问题讨论】:
标签: javascript cookies iframe safari