1
    event.respondWith(caches.match(event.request).then(function (response) {
        if (response) {
            return response;
        }          
         //return fetch(event.reuqest, { credentials: 'include' });

        //event.respondWith(fetch(event.request, { credentials: 'include' }));
    }));

これは、serviceworkers を介してリクエストを処理するための一般的なコードです。URL がキャッシュにある場合は、キャッシュ レスポンスを返すか、サーバーからフェッチします。しかし、私の疑問は、2 つのコメント行に関するものです。応答を取得するには、そのうちの 1 つを使用する必要があります。

私の疑問は、event.respondWith(fetch(event.request, { credentials: 'include'ページのフェッチに使用すると、次のエラーが発生することです

DOMException: 'FetchEvent' で 'respondWith' を実行できませんでした: フェッチ イベントは既に応答されています。

しかし、ページは最終的にレンダリングされ、ブラウザは最終的に応答を取得していますが、サムを使用して画像を取得すると、同じエラーが発生し、その上に画像が取得されません。

2番目のオプションを使用するとreturn fetch(event.reuqest, { credentials: 'include' });、画像とページの両方で正常に機能します。

そのエラーの理由と、ファイルとページの動作が異なる理由を理解できません。

私のもう1つの疑問は、実際にここで資格情報パラメーターが必要かどうかです.Webで見た実装のほとんどがそれを使用しているため、追加しましたが、私が観察したことは、リクエストオブジェクトには既に資格情報プロパティが含まれていることです.常にではない

含む

いつかは

同一起源

それも。そのため、実際の資格情報の値を追加することで実際にオーバーライドしている可能性があります。そうでない場合は、それを含めるかどうかに違いはありません。問題ではありません。

ただし、逆の場合は、資格情報の値を上書きしないでください。これにより、悪影響が生じる可能性があります。

4

1 に答える 1