2017-09-25 5 views
0

サービスワーカーについていくつかの開発を行っています。私たちの提案は非常にシンプルです。私たちのapp.jsからのすべてのリクエストを記録してください。私はGoogleのウェブサイトからガイドを守っています。私は 'フェッチ'イベントのリスナーが必要です。フェッチCORS要求がサービスワーカーで失敗する

私のアプリとAPIは異なるホストにあります。

マイサービスワーカーのコードは次のようである:

self.addEventListener('fetch', (event) => { 
    console.log(event.request); 
    event.respondWith(async function() { 
    const response = await fetch(event.requet); 
    // we will do something here. 
    return response; 
    }()); 
}); 

私のapp.jsは今非常に簡単です:私は(別のサーバーにリクエストURLをない変更するまで

const url = 'https://api.github.com/users/CrisLi' 
    fetch(url) 
    .then((response) => response.json()) 
    .then((json) => console.log(json)) 
    .catch((error) => console.log(error)); 

このバージョンのコードはうまく機能しますGitHubワン)。

const url = 'https://172.16.50.91:8080/BNfSZIiGMs37unHZXtnSFv5?access_token=WUMzMgAAAV63ciKxAACowFVEVXNvNEhudXVzS3FidXBsNTVSeGE1IAAAAANUODNfd0VWcXBMVTJsSWVWakJVWTBNNVpqbGlPR1V5Wmpr' 
    fetch(url) 
    .then((response) => response.json()) 
    .then((json) => console.log(json)) 
    .catch((error) => console.log(error)); 

この新しいサーバーURLはすでにCORSをサポートしています。しかし、サービスワーカーコードで要求を取得すると、エラーが発生しました。

The FetchEvent for "https://172.16.50.91:8080/BNfSZIiGMs37unHZXtnSFv5?access_token=WUMzMgAAAV63ciKxAACowFVEVXNvNEhudXVzS3FidXBsNTVSeGE1IAAAAANUODNfd0VWcXBMVTJsSWVWakJVWTBNNVpqbGlPR1V5Wmpr" resulted in a network error response: the promise was rejected. 
Promise rejected (async) 
self.addEventListener @ service-worker.js:62 
Uncaught (in promise) TypeError: Failed to fetch 
(index):25 GET https://172.16.50.91:8080/BNfSZIiGMs37unHZXtnSFv5?access_token=WUMzMgAAAV63ciKxAACowFVEVXNvNEhudXVzS3FidXBsNTVSeGE1IAAAAANUODNfd0VWcXBMVTJsSWVWakJVWTBNNVpqbGlPR1V5Wmpr net::ERR_FAILED 
TypeError: Failed to fetch 

私はサービスワーカーコードを削除する場合は、直接APIをフェッチ呼び出して、それが正常に動作します。結果をサーバーに取得できます。 2つのバージョンのコードの唯一の違いは、サーバーです。私はそれがCORSと関係があると思います。 Github APIはCORSを非常にうまく処理しますが、そうではありません。

サービスワーカーでfetch APIを使用して通常のjavascriptのように動作させるにはどうすればよいですか?

javascriptスレッドのコードが正常に動作する理由はわかりませんが、サービスワーカーでは動作しません。

デフォルトのフェッチ要求モードを「no-cors」に変更しようとしましたが、動作しません。

答えて

0

結果を検索します。私のサーバーは自己署名入りのhttpsサーバーです。サービスワーカーは自己署名入りのhttpsサーバにCORSでアクセスできません。

関連する問題