当前位置: 首页 > 知识库问答 >
问题:

Firefox获取API:如何省略请求中的“源”头?

邹嘉荣
2023-03-14

如果您在Firefox WebExtension中发出获取请求,它将自动设置“origin”标题。例如,当我在WebExtensions中运行此代码时。。。

fetch('http://example.com/')

... 结果请求包含标题:“origin:moz”-extension://539a0d5b-60d9-4726-b3de-27d6979edc26"

在Chromium中运行相同的代码不会设置标头。(更新:这并不总是正确的,因为Chrome可能还会添加标题:“来源:Chrome-extension://...".)

有没有一个选项可以发送没有“来源”的请求

我在FetchAPI中找不到选项。到目前为止,我看到的唯一解决方案是使用WebRequestAPI删除头部,但这似乎过于复杂。

共有1个答案

漆雕令秋
2023-03-14

当WebExtension使用FetchAPI发送请求时,Firefox和Chrome都会自动填充origin标题。目前没有API选项来阻止它。

如果不希望出现这种行为,则有两种选择:

  1. 使用旧的XMLHttpRequest API,而不是获取
  2. 手动剥离头使用webRequest API

选项1将起作用,因为标头仅由读取API设置。对于选项2,您必须安装一个onBeforeSendHeaders处理程序,以便在请求离开浏览器之前删除标头:

function originWithId(header) {
  return header.name.toLowerCase() === 'origin' &&
         (header.value.indexOf('moz-extension://') === 0 ||
          header.value.indexOf('chrome-extension://') === 0);
}

chrome.webRequest.onBeforeSendHeaders.addListener(
  (details) => {
    return {
      requestHeaders: details.requestHeaders.filter(x => !originWithId(x))
    }
  },
  {urls: ["<all_urls>"]},
  ["blocking", "requestHeaders"]
);

要使用API,您需要将“webRequest”“webRequestBlocking”添加manifest.json中的权限中。

 类似资料:
  • 我想创建一个API,为了验证API使用者,我将提供一个API密钥、应用id和应用机密。问题是,我想知道http请求来自哪里,这样我就可以知道发出que请求的主机是否是注册主机。例如:www.someone。com的应用程序id为0001,应用程序机密为1200,api密钥为458。如果此凭据用于发出请求,我想知道请求者是否真的是www.someone。通用域名格式

  • 我试图构建一个仅当源URL位于allowlist上时才执行逻辑的应用程序。我正在尝试使用以下方法获取Firebase函数内部的源URL: 我试图从这个堆栈溢出帖子中使用这些: 所有返回未定义。 我试图从堆栈溢出帖子中整合此函数: 这返回我的云函数的基本url 我真正想看到的是发布文章的url。我用这个来写这篇文章,所以我希望看到:

  • 问题内容: 我想知道如何一次获取多个GET URL,然后将获取的JSON数据放入我的React DOM元素中。 这是我的代码: 但是,我想从服务器中获取其他JSON数据,然后使用传递到其中的所有这些JSON数据呈现我的ReactDOM。例如: 这可能吗?如果不是,将多个JSON数据提取到我的渲染ReactDOM元素中的其他解决方案是什么? 问题答案: 您可以在解决方案之前依靠Promises来执行

  • 我正在构建一个Java的grpc服务器,我很难得到请求头。proto文件是使用Pro buf-maven-plugin编译的,基于生成的存根,我无法访问上下文或请求元数据。 我还尝试在消息请求中定义一个键/值列表,希望grpc能够处理头映射,但目前为止没有成功。 知道我怎么能拿到标题吗? 谢谢 我的原型文件内容: 服务器端实现如下所示: 版本请求。getHeadersCount()始终返回0,尽管

  • 客户端可能会发送多个查询参数,如: 我需要获取所有查询参数并将其提取为字符串

  • 问题内容: 如果浏览到,我希望得到以下JSON响应: 但是,如果我使用selenium 我懂了 HTML标记来自哪里?如何从获得HTTP请求的原始JSON响应? 问题答案: 除了原始JSON响应外,还包含HTML以在浏览器中“漂亮地打印”响应。如果使用Firefox DOM和Style Inspector在浏览器中查看JSON响应的源,您将得到相同的结果。 要获取原始JSON响应,您可以照常浏览H