你可以在Safari扩展中修改HTTP请求头吗?

21

我可以在Firefox和IE中完成这个功能,我知道在Chrome中这个功能还不存在。有人知道在Safari插件中是否可以实现此功能吗?我在文档中找不到相关的信息。


我研究了一下,发现在Chrome/Safari/Opera上不可能实现。 - Julien
它现在在Chrome中存在。 - Brian
6
Chrome具有chrome.webRequest功能,详情请见http://developer.chrome.com/extensions/webRequest.html。 - Bob Fanger
3个回答

7

你现在可以在 Safari 中完成这个操作,而无需使用任何扩展程序,使用本地覆盖

  1. 从 Sources 或 Network 标签页中,对您想要覆盖的资源进行控制/右键单击。
  2. 选择创建请求本地覆盖
  3. 在 Web 检查器的左侧面板中的本地覆盖下,对资源覆盖进行控制/右键单击。
  4. 选择编辑本地覆盖...
  5. 点击添加标头(或更改现有标头的值)。
  6. 输入标头名称和值。
  7. 如果这是针对 POST、PUT 等请求的操作,请点击包含原始请求数据(否则,您将同时覆盖请求正文,而不仅仅是标头)。
  8. 再次尝试您的请求。所覆盖的标头应该已生效。您可以通过在网络标签页中检查请求来验证此操作。

这可以通过扩展来使用吗? - pkamb
1
只有在打开了相关网站的开发者工具时,这个方法才有效。 - robert.corlett
我尝试将此功能用于对特定域的所有请求,但是我没有成功。本地覆盖不能应用于相同域下的XHR请求。 - Halil

6

Safari已经添加了扩展支持,但与Chrome/Firefox/Edge相比,其API不允许您对请求和响应进行细粒度控制。

为了对请求和响应进行细粒度控制,您需要设置一个系统范围的代理。 Requestly桌面应用程序会自动为您完成此操作,并且还可以执行各种类型的修改,例如:

  • 修改请求/响应头
  • 重定向URL
  • 修改响应
  • 延迟网络请求
  • 插入自定义脚本
  • 更改用户代理

以下是关于使用requestly修改头信息的文章:https://requestly.io/feature/modify-request-response-headers/

免责声明:我在Requestly工作。


3
编辑(2021年11月):根据评论指出,ParosProxy似乎已经不存在了(从我看到的最后一次发布大约是在2006年)。Mac上有更现代的调试选项(非Safari浏览器插件),例如Proxyman。我不会再添加可能会过期的链接列表,而是建议人们在选择平台时搜索“调试代理”。

原始答案(2012年):

Safari高级偏好设置中的“开发”菜单允许您部分自定义标头(如用户代理),但它非常有限。

但是,如果特定的浏览器或应用程序不允许您更改标题,则将其排除在外。您可以使用FiddlerParosProxy(以及许多其他工具)来更改请求,而无论哪个应用程序发送请求。

它们也具有使您能够确保无论涉及的应用程序如何都发送相同标头的优点,并且(根据您的要求)可能跨多个浏览器和应用程序而不需要修改。


如果我们正在测试一个Web应用程序,并且我们必须向所有Web请求添加一个或多个额外的标头,那该怎么办?使用代理来完成这个任务是否像使用浏览器插件一样容易?我想知道我们是否必须手动修改每个Web请求,还是在代理内部有自动化的方法。 - MasterJoe
@testerjoe2 在这个问题被提出的时候,Safari 是 Windows 上支持的浏览器,但在2012年后被停止支持。 - Adam Comerford
@AdamComerford ParosProxy的链接现在已经失效了 :( - Jonas Heinisch
1
@JonasHeinisch 是的确如此 - 近十年来许多事情发生了变化。我在答案顶部添加了编辑说明,但保留了原始内容以供参考。 - Adam Comerford

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