【问题标题】:Using fetch in chrome extension doesn't include referer header in the request在 chrome 扩展中使用 fetch 不会在请求中包含 referer 标头
【发布时间】:2018-12-05 07:34:47
【问题描述】:

通常,使用来自网站的fetch 发送请求会在请求中包含引用标头,具体取决于referrer-policy

在 chrome 扩展后台脚本中,我尝试将referrer 作为客户端,将referrerPolicy 作为 unsafe-url、origin 和 origin-when-cross-origin。 在我的清单中,我在权限中有我的端点 URL,但不是所有 URL。

fetch(url, {
    method: 'POST',
    mode: 'cors',
    credentials: 'include',
    cache: 'no-cache',
    headers: { 
      'Content-Type': 'application/x-www-form-urlencoded',
    },
    referrer: 'client',
    referrerPolicy: 'origin',
    body: JSON.stringify({ params })
  })

【问题讨论】:

  • Firefox 也会出现这种情况吗?可能是 Chrome 中的错误。
  • @wOxxOm 还没有机会在 Firefox 上试用。
  • 你有什么问题?
  • 检查您的后台页面日志。当我尝试为 ajax 请求设置引荐来源网址时,会出现一条错误消息:拒绝设置不安全的标头“引荐来源网址”。

标签: javascript google-chrome-extension fetch-api referrer http-referer


【解决方案1】:

暴力解决:

chrome.webRequest.onBeforeSendHeaders.addListener(
  function(details) {
    details.requestHeaders.push({name: 'Referer', value:'http://localhost/referer'});
    return {requestHeaders: details.requestHeaders};
  },
  {urls: ["http://localhost/*"]},
  ["blocking", "requestHeaders"]
);


fetch('http://localhost/')

【讨论】:

    猜你喜欢
    • 2017-12-26
    • 2016-05-23
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多