2016-07-04 12 views
2

サイトの静的コンテンツの一部をキャッシュするIISホステッドWebサイト内でサービスワーカーを使用しようとしています。このサイトは、Windows認証を使用する内部アプリケーションです。あまりにも面倒なくサービスワーカーを登録して実行することができましたが、キャッシュを開いてファイルをキャッシュに追加すると、承認が失敗すると約束が破棄されます。返されるHTTPの結果は401 Unauthorizedです。これは、ブラウザーとサーバーが承認を交渉できるようになるまで、最初のいくつかの要求に対する通常の応答です。サービスワーカーを基本認証で使用する方法(NTLM、ネゴシエート)

私はすぐに説明に役立ついくつかのコードを掲載します。

EDIT

var staticCacheName = 'app-static-v1'; 
console.log("I AM ALIVE"); 
this.addEventListener('install', function (event) { 
    console.log("AND I INSTALLED!!!!"); 
    var urlsToCache = [ 
     //...many js files to cache 
     '/scripts/numeral.min.js?version=2.2.0', 
     '/scripts/require.js', 
     '/scripts/text.js?version=2.2.0', 
     '/scripts/toastr.min.js?version=2.2.0', 
    ]; 


    event.waitUntil(
     caches.open(staticCacheName).then(function (cache) { 
      cache.addAll(urlsToCache); 
     }).catch(function (error) { 
      console.log(error); 
     }) 
    ); 
}); 
+0

この質問/ソリューションは、BASIC認証を使用するすべてのサイトに適用され、それがMタイトルが更新された場合、より多くの聴衆に利益をもたらす。 – SGD

+1

@SGDタイトルに何をお勧めしますか? "基本的な認証でサービスワーカーを使用する方法"のようなもの –

+0

はい、それは私が実際に探していたものです。 – SGD

答えて

11

これは、コードの欠如与えられただけで推測、ですが、あなたのような何かをやっている場合:

caches.open('my-cache').then(cache => { 
    return cache.add('page1.html'); // Or caches.addAll(['page1.html, page2.html']); 
}); 

あなたが暗黙の利点を取っています文字列をcache.add()/cache.addAll()に渡すときに発生するRequestobject creation(セクション6.4.4.4.1を参照)。作成されたRequestオブジェクトは、デフォルトのcredentials mode'omit')を使用します。

あなたは明示的にあなたのケースでそう'same-origin'だろうあなたが好むの資格情報モードを含むRequestオブジェクトを構築している代わりに、何ができるか:あなたはあなたがたURLの束を持っていた場合

caches.open('my-cache').then(cache => { 
    return cache.add(new Request('page1.html', {credentials: 'same-origin'})); 
}); 

cache.addAll()に配列を渡して、あなたはRequest Sの対応する配列にそれらを.map()ことができます。

var urls = ['page1.html', 'page2.html']; 
caches.open('my-cache').then(cache => { 
    return cache.addAll(urls.map(url => new Request(url, {credentials: 'same-origin'}))); 
}); 
+0

ありがとう、ジェフ、私はそれをチェックします。あなたは私がしていることを正確に推測しています。私は質問にコードを追加しました。 –

+0

ありがとうございます。これはまさに私が必要としていたものです! – Jespertheend

関連する問題