修改webRequest的onHeadersReceived事件中的响应标头,以启动“另存为”窗口

时间:2018-06-29 21:53:21

标签: javascript firefox-webextensions

我正在尝试Web扩展,并尝试通过将Content-Disposition设置为附件来修改响应头,以使XMLHttpRequest()的结果可下载。

现在,我只是尝试用此MDN Web Doc中所述的用于启动下载的三个最基本的方法替换收到的响应标头。而且我认为代码与webRequest网络文档中提供的非常简短的example一致,该文档正在修改请求标头。

对于manifest.json文件中的all_urls,我具有webRequest和webRequestBLocking权限以及主机权限。

此代码完成后,当我写出GET请求收到的响应标头时,它保持不变。我确信这段代码可以运行,因为我在每个阶段都将消息发送回内容脚本。并且onHeadersReceived事件在GET请求的onreadystatechange事件之前完成。

发布了许多问题,指出无法在开发工具中查看已修改的标头,但我正在写出GET请求收到的内容。 This问题指出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 };

 }

1 个答案:

答案 0 :(得分:0)

要下载带有chrome扩展名的链接,请尝试以下操作:

//For set value in session

$request->session()->put('usertype',$exist[0]->user_type);

//For getting value from session

$request->session()->get('usertype');

//For getting session value in blade file

Session::get('usertype')