--- title: Document.requestStorageAccess() slug: Web/API/Document/requestStorageAccess tags: - API - DOM - Document - Experimental - Reference - Storage Access API - requestStorageAccess - メソッド translation_of: Web/API/Document/requestStorageAccess ---
requestStorageAccess()
は {{domxref("Document")}} インターフェイスのメソッドで、ファーストパーティのストレージへのアクセスが許可されたら解決し、アクセスが拒否されたら拒否される {{jsxref("Promise")}} を返します。
ストレージへのアクセスは、以下の一連のチェックに基づいて許可されます。
allow-storage-access-by-user-activation
がなければ、拒否。requestStorageAccess()
の呼び出しのためにその事実を保存。上記のすべての要件が満たされていると仮定すると、Firefox は、ユーザーセッション存続期間の最大24時間で、現在のセッションのファーストパーティのオリジンのしきい値数まで、要求オリジンへのストレージアクセスを自動的に許可します。 要求オリジンがストレージアクセス許可の最大許容数を超えた後、同じ閲覧セッション中に requestStorageAccess()
を呼び出すと、ユーザーにプロンプトします。
オリジンが取得できる同時ストレージアクセス許可の最大数は、現在のセッションでアクセスされた最上位オリジンの数の 1% または 5 のいずれか大きい方として現在定義されている正の整数です。 しきい値は eTLD+1 のレベルで適用されるため、例えば、foo.example.com
と bar.example.com
に対する2つのストレージアクセス許可は、制限に対する単一の例外としてのみカウントされます。
requestStorageAccess()
呼び出しの時点で、要求オリジンがストレージアクセスを持っている場合...
...最大値より少ないオリジン:
...最大値以上のオリジン:
一時的または永続的なストレージアクセス許可が期限切れになると、要求オリジンのストレージアクセスを持つオリジンの数が1ずつ減ります。
注: 要求オリジンが追跡オリジン(tracking origin)として分類されていない場合、アクセス要求には、ページがリロードされると消滅する一時的なストレージアクセス許可が自動的に付与されます。 この場合、ユーザーにはプロンプトが表示されないため、requestStorageAccess()
を呼び出しても、{{domxref("Document.hasStorageAccess()")}} によって返される値を変更する以外に副作用はありません。
ストレージアクセス許可のしきい値により、Firefox がユーザーにアクセスをプロンプトする条件の下でウェブサイトをテストすることがより難しくなる場合があります。 テストを簡単にするために、requestStorageAccess()
呼び出し時のプロンプトを制御する about:config
に次の2つの設定を追加しました。
dom.storage_access.auto_grants
を false
に設定して、一時ストレージアクセス許可の自動許可を無効にすることができます。 追跡者(trackers)として分類されたオリジンによる requestStorageAccess()
の呼び出しはすべて、プロンプトをトリガーします。dom.storage_access.max_concurrent_auto_grants
は、ユーザーがプロンプトを受け取り始めるストレージアクセス許可のしきい値数を制御します。 例えば、requestStorageAccess()
が呼び出される最初のサイトでアクセスを自動的に許可し、その後プロンプトするように Firefox を構成する場合、dom.storage_access.max_concurrent_auto_grants
設定の値を 1 に調整する必要があります。var promise = document.requestStorageAccess();
なし。
ファーストパーティのストレージへのアクセスが許可されたら undefined
で満たされ、アクセスが拒否されたら拒否される {{jsxref("Promise")}} です。
Promise が解決されると、 Promise が満たされたか拒否されたかに関わらず、ユーザージェスチャーが処理されているかのように解決ハンドラーが実行されます。
document.requestStorageAccess().then( () => { console.log('access granted') }, () => { console.log('access denied') } );
この API はまだ提案段階にあります。 — 標準化プロセスはまだ始まっていません。現在のところ、この API の詳細の仕様書は、アップルのブログ投稿の Introducing Storage Access API、および WHATWG HTML issue 3338 — Proposal: Storage Access API で見ることができます。
{{Compat("api.Document.requestStorageAccess")}}