我正在尝试使用 Web 扩展,并尝试通过将 Content-Disposition 设置为附件来修改响应标头以使 XMLHttpRequest() 的结果可下载。
现在,我只是尝试将收到的响应头替换为三个最基本的用于启动下载,如MDN Web Doc中所述。而且我认为代码与 webRequest 网络文档中提供的这个非常简短的示例一致,即修改请求标头。
我拥有 manifest.json 文件中 all_urls 的 webRequest 和 webRequestBLocking 权限和主机权限。
这段代码完成后,当我写出 GET 请求收到的响应标头时,它保持不变。我确信这段代码可以运行,因为我在每个阶段都从内部将消息发送回内容脚本;并且 onHeadersReceived 事件在 GET 请求的 onreadystatechange 事件之前完成。
发布了许多问题,指出无法在开发工具中查看修改后的标头,但我正在写出 GET 请求收到的内容。 这个问题指出 onHeadersReceived 使用代理标头,您不能真正更改它们,并且在 onResponseStarted 中这样做;但这也没有用。
我希望响应标头启动“另存为”窗口,以将从 GET 响应返回的数据下载到客户端磁盘。
我一定错过了一些非常基本的东西。我做错了什么或没有做什么?谢谢你。
browser.webRequest.onHeadersReceived.addListener(
listener,
{ urls : ["<all_urls>"] },
["blocking", "responseHeaders"]
);
function listener( details) {
details.responseHeaders = [ { 'Content-Type' : 'text/html; charset=utf-8' }, { 'Content-Disposition' : 'attachment; filename="fileName.html"' }, { 'Content-Length' : '22' } ];
return { responseHeaders : details.responseHeaders };
}