如何在没有浏览器扩展的情况下向浏览器请求添加标头?

4
有时候,我们需要为每个请求或特定请求添加特殊的头信息。通常的做法是使用浏览器扩展来修改请求头。但是,是否有其他方法可以在不使用任何浏览器扩展的情况下实现这一点呢?
PS - 我已经在SO上搜索了,没有找到任何一个帖子真正建议或展示如何做到我所需的。

使用代理是否对您是一个可接受的解决方案? - user10864482
@User23332 - 听起来不错。 - Erran Morad
3个回答

9

除了专为自定义HTTP请求设计的API(XMLHttpRequest和fetch)之外,使用嵌入在页面中的JS进行请求时,浏览器无法添加任意HTTP标头。


1

如果您控制要使用此功能的网站,可以通过设置每个应用程序安装ServiceWorker来实现。简而言之,服务工作者在浏览器内部作为代理服务器运行。它们可以执行一些操作,例如即使您没有打开网站也可以通知您更新。

在ServiceWorker中,您可以设置事件侦听器,代表客户端应用程序执行某些异步任务。这包括每次网页发出请求时触发的fetch事件。

这里有一个关于某人实现ServiceWorker并需要拦截网络请求的写作。您可以遵循大部分内容,并在检查请求类型时更改逻辑。此时,您可以在代表应用程序调度之前添加任何特殊标头。


0

在不使用任何外部工具的情况下,无法编辑现有DOM中的请求。最合适的是浏览器扩展程序,它可以编辑由JavaScript代码执行的现有DOM和HTTP请求(XMLHttpRequest和fetch)。

如果网站的所有者是您,那么有数百万种可能性可以向请求添加标头。并且解决方案因您用于进行请求的库而异。

但一般来说,不建议修改不属于您的网站数据。

浏览器扩展程序正是您为解决问题而找到的确切方法。希望我的评论能帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接