2016-06-14 7 views
1

私はサービス労働者にService WorkerでPOST httpメソッドを使用できますか?

if (event.request.method =='POST') { 

     event.respondWith(fetch(event.request,{method: 'post'})); 
     return; 
    } 

をフェッチして、このコマンドを使用しますが、私はこのエラーを取得:

キャッチされない(約束で)例外TypeError:「ServiceWorkerGlobalScope」on「にフェッチ」を実行に失敗しました:リクエストを構築することはできませんモードが「ナビゲート」であり、空でないRequestInitである要求を伴う。

どうすればよいですか?

+0

イベントの種類は何ですか? – sp1rs

答えて

2

あなたがPOST要求に対してfetchイベントを処理するときだけ、デフォルト、ふり様there's-NO-サービス労働者の振る舞いを実装するようにあなたが提供するサンプルコードに基づいて、それが見えます。

これを行う最も簡単な方法は、最初にevent.respondWith()を呼び出さないことです。 event.respondWith()を呼び出すことはオプションです。fetchハンドラで呼び出さないと、サービスワーカーは他の登録済みfetchハンドラを検索し、応答する機会を与えます。

fetchイベントハンドラのどれも応答しない場合、サービスワーカーの関与がまったくなかった場合とまったく同じように、ブラウザキャッシュ(要求ヘッダーとキャッシュの状態に応じて)またはネットワークを介して要求が実行されます。

何らかの理由で、あなたが本当に `event.respondWith()を呼び出す必要がありますが、あなたはその後、{method: 'post'}ビットを残して、すなわち、動作するはず

event.respondWith(fetch(event.request)); 

を使用して、デフォルトの動作を模倣したい、場合

event.requestは既に POSTであることを知っているので、他のものを fetch()に渡す必要はありません。

関連する問題