2016-06-14 104 views
1

我使用這個命令中獲取的服務人員如何在Service Worker中使用POST http方法?

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

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

,但我得到這個錯誤:

未捕獲的(以諾)類型錯誤:未能執行「取」上「ServiceWorkerGlobalScope」:不能建立一個請求使用模式爲「導航」的請求和非空的RequestInit。

我該怎麼辦?

+0

什麼類型的事件? – sp1rs

回答

2

根據您提供的示例代碼,當您處理POST請求的fetch事件時,您似乎只想實現默認的假裝類似於服務人員的行爲。

最簡單的方法是首先不要致電event.respondWith()。調用event.respondWith()是可選的,如果您不在fetch處理程序中調用它,服務人員將查找任何其他已註冊的fetch處理程序並給它們一個迴應的機會。

如果fetch事件處理程序都不響應,那麼請求將通過瀏覽器緩存(取決於請求標頭和緩存狀態)或網絡來完成,就好像沒有服務工作者參與一樣。

如果由於某種原因,你真的需要調用`event.respondWith(),但要模仿的默認行爲,然後使用

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

應該工作,即離開了{method: 'post'}位。 event.request已經知道它是POST,所以沒有必要將其他任何東西傳遞給fetch()以告知它。

相關問題