如何通过Chrome.webRequest向data-urls添加响应标头

时间:2017-08-18 08:50:51

标签: google-chrome google-chrome-extension

我根据chrome.webRequest我要更改数据网址响应标记。但我无法在chrome.webRequest.onHeadersReceived中捕获数据请求。

我错了吗?

chrome.webRequest.onBeforeRequest.addListener(
  function (details) {
    const url = details.url

    if(url == 'http://www.example.com/api/getUsers') {
      return {
        redirectUrl: 'data:application/json; charset=utf-8,' + 
JSON.stringify({"a":1, "b": 2})
      }
    }

    return {cancel: false}

  },
  {urls: ["<all_urls>"]},
  ["blocking"]
)

chrome.webRequest.onHeadersReceived.addListener(
  function (details) {
    console.log(details)  // can't capture data-urls

    return {responseHeaders:details.responseHeaders};
  },
  {urls: ["<all_urls>"]},
  ["responseHeaders","blocking"]
)

1 个答案:

答案 0 :(得分:1)

您无法使用data: API捕获webRequest个网址,因为data:不是supported scheme for host permissions

因此,即使使用<all_urls>权限/过滤器,您也无法获得data:

的活动

文档引用:

  

webRequest API仅在给定其主机权限的情况下公开扩展程序有权查看的请求。此外,只有以下方案可供访问:http://https://ftp://file://ws://(自Chrome 58以来),wss://(自Chrome 58)或chrome-extension://

我很确定已有针对此的功能请求,但我目前无法找到它。