我对内部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