2015-07-19 47 views
1

我對內部API的每個請求都需要一個授權標頭。我正在使用許多Web組件構建基於聚合物的應用程序,包括私人和第三方。我通過<iron-ajax>元素幾乎完成了所有的AJAX調用。我知道我可以創建一個自定義組件來實現我正在尋找的集中化,但是我想知道是否使用服務工作人員來攔截對我的api的請求並添加所需的標題和任何其他操作或驗證,我可能會可行的,高性能的,甚至可能的。特別是因爲Polymer 1.0不支持擴展其他組件。如何使用服務工作者爲我的所有API請求添加授權標頭?

+0

「我知道我可以創建一個自定義組件」---我認爲這正是您的問題的答案,並且是一個完美的用例,用於創建包裝您的調用的自定義組件。這是一個組件使用 1.靜態特殊標頭 2.執行驗證 3.可在外部配置。 所有這些都讓我大吃一驚,而且我認爲服務工作者攔截這個等等的方式比我們需要做得更多。 「這是一個元素!」 – mbunit

回答

3

將服務工作者腳本想象成一個(java-)可編寫腳本的代理 - 只要服務工作者控制源,您肯定可以對您的調用進行任何操作(包括添加,刪除和操作HTTP標頭)。直到你的API調用是相同的。 Cross-Origin和其他不透明的請求會變得更加棘手,但我認爲這不適用於您迄今爲止描述它的用例。

該方法唯一的問題是,您基本上將您的應用程序的範圍限制爲單個瀏覽器:Google Chrome(版本40+)。如果你沒有問題,隨時可以繼續使用,但是由於Firefox不支持請求捕獲(fetch事件),(即使現在的服務人員似乎最終登陸Firefox 43),你不能填充工具服務人員 - 你會提供一些回退機制在你的頁面的JS代碼如果你想支持任何瀏覽器,Chrome以外的其他40多個至少數月來。

+1

爲了加強這一點:服務工作者的目的是逐漸增強,設計一個只在服務人員註冊時纔會工作的頁面幾乎肯定是一個錯誤。即使對於Chrome用戶,在用戶第一次訪問該網站時,SW也會(通常)不會處於活動狀態,或者如果用戶移位,則會重新加載您的某個網頁。 –

+0

謝謝你們兩位。這爲他們的預期用途增加了一些清晰度。我認爲使用它們並不合理。我意識到我可以很容易地劫持'xhr.open'方法來設置監聽器並執行我需要的任何操作,而現在,我選擇使用聚合物行爲來做到這一點。 – bearfriend

相關問題