【问题标题】:How to add headers to a browser request without any browser extensions?如何在没有任何浏览器扩展的情况下向浏览器请求添加标头?
【发布时间】:2017-12-28 01:12:04
【问题描述】:
有时,需要为每个请求或从浏览器发出的特定请求添加特殊标头。执行此操作的常用方法是使用允许我们修改请求标头的浏览器扩展。有没有其他方法可以做到这一点,没有任何浏览器扩展?
PS - 我已经搜索过 SO,但没有找到一篇实际建议或展示如何做我需要的帖子。
【问题讨论】:
标签:
javascript
google-chrome
firefox
browser
http-headers
【解决方案1】:
在设计用于发出自定义 HTTP 请求(XMLHttpRequest 和 fetch)的 API 之外,不可能向使用页面中嵌入的 JS 的浏览器发出的请求添加任意 HTTP 标头。
【解决方案2】:
如果您控制想要此功能的网站,您可以通过将每个应用程序设置为安装ServiceWorker 来实现此目的。简而言之,服务工作者在您的浏览器中作为代理服务器运行。即使您没有打开网站,他们也可以执行诸如通知您更新等操作。
在 ServiceWorker 中,您可以设置可以代表客户端应用执行一些异步任务的事件侦听器。这包括每次网页发出请求时触发的fetch 事件。
Here's 写了一篇关于实现 ServiceWorker 的人也需要拦截网络请求的文章。您可以遵循其中的大部分内容,并在检查请求类型时更改逻辑。此时,您可以在代表应用程序调度之前添加任何特殊标头。
【解决方案3】:
如果不使用任何外部工具,就无法在现有 DOM 中编辑请求。最合适的是浏览器扩展,它正在编辑由 JavaScript 代码完成的现有 DOM 和 HTTP 请求(XMLHttpRequest 和 fetch)。
如果网站的所有者是您,则有数百万种向请求添加标头的可能性。并且解决方案会有所不同,请考虑您使用什么库来执行请求。
但一般不建议修改不属于您的网站数据。
浏览器扩展正是您为您的问题找到的东西。
希望我的评论能帮到你。