Webextension:如何透明地修改XMLHttpRequests

问题描述 投票:0回答:1

我的目标

…将具有一个Web扩展(目前在Firefox中),该扩展应尽可能透明地拦截和修改站点的XMLHttpRequests问题。最好的情况是,即使明确查找扩展名,该站点也无法检测到该扩展名。例如,尽管原始页面明确禁用了关键数据,但我希望它能够在发送关键数据之前自动对其进行编辑/替换,或强制对大图像进行缓存。

原始方法

使用后台脚本,并使用browser.webRequestblocking来拦截所有请求。

browser.webRequest.onBeforeRequest.addListener(
  modifySend,
  {
    urls: ["<all_urls>"],
  },
  ["blocking", "requestBody"]
);

browser.webRequest.onResponseStarted.addListener(
  modifyReceive,
  {
    urls: ["<all_urls>"],
  },
  ["blocking", "responseHeaders"]
);

这在某种程度上有效。虽然我可以view所有请求,但无法更改发送(POST)的内容,并且(某些?)已更改的接收标头被Firefox忽略。例如,我无法覆盖cache-control,原始值仍然有效。

内容脚本

因为我只对XMLHttpRequest感兴趣,所以为什么没有内容脚本来修改那些as suggested in another question。不幸的是,内容脚本是isolated from the page they run in,注入的脚本是可检测的。更改响应头的问题也没有解决。

问题

拦截和修改XMLHttpRequests的正确方法是什么?有可能达到我想要的程度吗?并作为扩展:如何提供大数据blob作为响应,例如,当我不能说服浏览器忽略“不缓存”标头时自己进行缓存?] >>

我的目标……是要有一个Web扩展(目前在Firefox中),以尽可能透明地拦截和修改站点的XMLHttpRequests问题。最好的情况是该扩展名不可检测...

javascript xmlhttprequest firefox-webextensions interception
1个回答
0
投票

最后,我使用了两种单独的方法。一种用于提供大数据斑点,另一种用于XMLHttpRequest拦截。

© www.soinside.com 2019 - 2024. All rights reserved.