我對內部API的每個請求都需要一個授權標頭。我正在使用許多Web組件構建基於聚合物的應用程序,包括私人和第三方。我通過<iron-ajax>
元素幾乎完成了所有的AJAX調用。我知道我可以創建一個自定義組件來實現我正在尋找的集中化,但是我想知道是否使用服務工作人員來攔截對我的api的請求並添加所需的標題和任何其他操作或驗證,我可能會可行的,高性能的,甚至可能的。特別是因爲Polymer 1.0不支持擴展其他組件。如何使用服務工作者爲我的所有API請求添加授權標頭?
回答
將服務工作者腳本想象成一個(java-)可編寫腳本的代理 - 只要服務工作者控制源,您肯定可以對您的調用進行任何操作(包括添加,刪除和操作HTTP標頭)。直到你的API調用是相同的。 Cross-Origin和其他不透明的請求會變得更加棘手,但我認爲這不適用於您迄今爲止描述它的用例。
該方法唯一的問題是,您基本上將您的應用程序的範圍限制爲單個瀏覽器:Google Chrome(版本40+)。如果你沒有問題,隨時可以繼續使用,但是由於Firefox不支持請求捕獲(fetch
事件),(即使現在的服務人員似乎最終登陸Firefox 43),你不能填充工具服務人員 - 你會有提供一些回退機制在你的頁面的JS代碼如果你想支持任何瀏覽器,Chrome以外的其他40多個至少數月來。
爲了加強這一點:服務工作者的目的是逐漸增強,設計一個只在服務人員註冊時纔會工作的頁面幾乎肯定是一個錯誤。即使對於Chrome用戶,在用戶第一次訪問該網站時,SW也會(通常)不會處於活動狀態,或者如果用戶移位,則會重新加載您的某個網頁。 –
謝謝你們兩位。這爲他們的預期用途增加了一些清晰度。我認爲使用它們並不合理。我意識到我可以很容易地劫持'xhr.open'方法來設置監聽器並執行我需要的任何操作,而現在,我選擇使用聚合物行爲來做到這一點。 – bearfriend
- 1. 如何在extjs中的ajax請求中添加授權標頭
- 2. 如何在我的請求頭添加授權?
- 3. 爲某些請求添加基本授權標頭
- 4. 使用HTTP授權標頭的API請求在componentDidMount內
- 5. 有人可以幫助我工作代碼Restassured後請求與授權標頭
- 6. Guzzle HTTP - 直接將授權標頭添加到請求中
- 7. 如何爲http請求添加標頭
- 8. 向Android中的HTTP POST請求添加授權標頭(使用JSON)
- 9. 向WKWebView中的所有傳出請求添加請求標頭
- 10. 從http請求獲取授權標頭
- 11. 添加授權在angular2 API調用頭
- 12. 在Postman中使用Blob服務API傳遞blob - 授權標頭
- 13. Bing API請求的Ajax授權標頭是什麼?
- 14. HTTPS請求與授權不通過Safari的工作與授權頭通過HTTPS
- 15. 基本身份驗證POST請求API授權標頭 - Ruby
- 16. 使用WCF的Http請求中缺少授權標頭
- 17. 從服務請求Oauth Google授權
- 18. 如何從QT中的http請求中刪除授權標頭
- 19. 帶有授權標頭的離子http請求
- 20. jQuery.ajax不會發送帶有OPTIONS請求的授權標頭
- 21. 如何設置SSE請求授權標頭?
- 22. 請求頭字段添加到JMeter的web服務(SOAP)請求
- 23. 向Springfox添加授權標頭
- 24. DNS:授權與動態,我可以動態轉發所有請求到授權域名服務器
- 25. 爲什麼在iOS PATCH請求中刪除授權標頭?
- 26. 400使用授權使用者令牌時的錯誤請求
- 27. 如何找出請求對象中的所有請求標頭?
- 28. setRequestHeader不添加授權頭
- 29. 如何使用請求庫授權asana api?
- 30. 添加bodyParser()掛起所有API請求
「我知道我可以創建一個自定義組件」---我認爲這正是您的問題的答案,並且是一個完美的用例,用於創建包裝您的調用的自定義組件。這是一個組件使用 1.靜態特殊標頭 2.執行驗證 3.可在外部配置。 所有這些都讓我大吃一驚,而且我認爲服務工作者攔截這個等等的方式比我們需要做得更多。 「這是一個元素!」 – mbunit