为什么 requestHeaders 未定义?

Sto*_*246 4 javascript google-chrome-extension

我正在制作一个记录请求标头的 Chrome 扩展。

在我的background.js文件中我有这个代码

chrome.webRequest.onSendHeaders.addListener(function(res){
    res.requestHeaders.forEach(header => {
        headers.push(header)
    })
}, {urls : ["<all_urls>"]})
Run Code Online (Sandbox Code Playgroud)

但 res.requestHeaders 返回未定义(无法读取未定义的 forEach 属性)

wOx*_*xOm 6

应该在addListener的第三个参数中指定:

chrome.webRequest.onSendHeaders.addListener(
  fn,
  {urls: ['<all_urls>']},
  ['requestHeaders']);
Run Code Online (Sandbox Code Playgroud)

要修改响应,您需要在参数中添加“blocking”,并在清单的权限中添加“webRequestBlocking”,请参阅webRequest 文档以获取更多信息。

要在现代版本的 Chrome 中处理特殊标头(cookie、等),您还referer需要指定,如果您想支持旧版本的 Chrome,请执行以下操作:extraheaders

chrome.webRequest.onSendHeaders.addListener(fn, {
  urls: ['<all_urls>'],
}, [
  'blocking',
  'requestHeaders',
  chrome.webRequest.OnSendHeadersOptions.EXTRA_HEADERS,
].filter(Boolean));
Run Code Online (Sandbox Code Playgroud)