我对内部 API 发出的每个请求都需要一个 Authorization 标头。我正在使用许多 Web 组件(私有的和第三方的)构建一个基于 Polymer 的应用程序。我几乎所有的 AJAX 调用都是通过<iron-ajax>
元素进行的。我知道我可以创建一个自定义组件来实现我正在寻找的集中化,但我想知道是否使用服务工作者来拦截对我的 api 的请求并添加所需的标头以及我可能想要的任何其他操作或验证可行的,高性能的,甚至是可能的。特别是因为 Polymer 1.0 还不支持扩展其他组件。
问问题
322 次
1 回答
3
将 service worker 脚本视为(java-)可编写脚本的代理——只要 service worker 控制源,您当然可以对您的调用进行任何操作(包括添加、删除和操作 HTTP 标头)。直到你的 API 调用是同源的。Cross-Origin 和其他不透明的 request-y 东西变得更加棘手,但从您迄今为止的描述来看,我认为这不适用于您的用例。
这种方法的唯一问题是您基本上将应用程序的范围限制在一个浏览器中:Google Chrome(40+ 版)。如果你觉得这没问题,请随意继续,但由于 Firefox 尚不支持请求捕获(fetch
事件),(即使此时服务工作者似乎终于登陆 Firefox 43),并且你不能 polyfill 服务工作者——如果你想至少在未来几个月内支持任何浏览器,除了 Chrome 40+,你必须在页面的 JS代码中提供一些后备机制。
于 2015-07-19T22:27:25.737 回答