タグ付けされた質問 「storage-access-api」

1
SafariのStorage Access APIを使用してiframeにCookieを設定できません
ページにiframeがあります。SafariがサードパーティのCookieをブロックしているため、「開発者向けガイダンス」で以下の提案に従って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 …

2
Safari 13以降のiframeがCORS Cookieをブロックする
Safariのフラットアウトでは、親ドメインとは異なるドメインのiframeにcookieを設定できません。サーバー側のCORSヘッダーは抑制されます。 明確にするために:ユーザーはdomainA.comにいます。domainB.comのiframeが開いていて、iframe内のdomainB.comのユーザーを認証しようとします。Set-Cookieヘッダーは、必要なすべてのヘッダーとともに、domainB.com iframe内のサーバーから返されますが、Safariは後続の呼び出しでそれを送り返しません。 以前の回避策は、iframeからフォームを送信し、応答にCookieを設定することでした。ユーザーがフォームをクリックして何かを送信するのが好きだったのではないでしょうか。フォームの送信にはコールバックがないため、Cookieをポーリングして応答がいつ返されたかを確認する必要があります。また、HttpOnly Cookieの場合はできませんでしたが、うまくいきました。それがなかったまで。 次に、より最近の回避策は、ユーザーを真新しいウィンドウ/タブでiframeドメインにリダイレクトし、そこにランダムなCookieを設定し、その瞬間から、そのサブドメインがiframe内で「信頼」されたことです。ここでも、新しいウィンドウ/タブを開くにはクリックが必要で、新しいタブが開いていることを視覚的に示すこともありました。多くのセキュリティ、そのような標準。 そして今、Safari 13以降-回避策はありません。安全なiframe Cookie設定はもうありません 🤬 その他の認証スキームは、私たちには適していません(例:Auth-Xヘッダー)。HttpOnlyセキュアCookieを使用する必要があります。これは、そのトークンがJavaScriptクライアント側からアクセスできないようにするためです。 明確にするために、すべてが他のブラウザでうまく機能します。 関連するWebKit Bugzilla 誰か提案はありますか? 編集: リンク@tomschmidtをありがとう、それは正しい方向のようです。AppleのStorage Access APIを使用してみましたが、残念ながら、APIを使用してログインロジックを初期化する前にアクセスをリクエストするようにしていますが、 requestStorageAccess = async() => { return new Promise(resolve => { //@ts-ignore document.requestStorageAccess().then( function () { console.log('Storage access was granted'); resolve(true); }, function () { console.log('Storage access was denied'); resolve(false); } ); …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.