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

获取未接收请求标头的事件

魏彦
2023-03-14

服务工作者内部的fetch事件似乎没有接收到请求头,尽管MDN文档中有说明:

通过调用FetchEvent返回的request对象的参数,可以检索关于每个请求的大量信息:

事件要求url
事件。要求方法
事件。要求标题
事件。要求身体

从主线程获取资源的代码:

fetch(`${companyConfig.base}ticket-scanner/config`, {
    headers: {
        'X-Nsft-Locale' : `en`,
        'X-Nsft-Id': `1`,
    },
}).then((response) => {
    return response.json();
}).then((data) => {...})

在SW文件中获取事件处理程序:

self.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.match(event.request, {cacheName : CACHE_NAME})
        .then(function(response) {
            if(response) {
                return response;
            }
            console.log(event.request.headers); //Log out headers
            return fetch(event.request).then(function(response){
                return response;
            }).catch(function(err){
                console.error(err);
            })
        })
    )
});

记录每个fetch事件的标题会给我一个空对象:

标题{}

这阻止了我缓存这个只需要这两个头的特定请求。不需要证书。我是不是漏了什么?

共有1个答案

罗昕
2023-03-14

标题界面是可编辑的,支持。get()访问器和一个。has()存在性检查。

您可以利用其中任何一个来读取您关心的值。

const request = new Request('https://example.com', {
  headers: {
    'x-header-1': 'header 1 value',
    'x-header-2': 'header 2 value',
  }
});

for (const [header, value] of request.headers) {
  console.log(`${header}: ${value} (via iterator)`);
}

console.log(`'x-header-1' is ${request.headers.get('x-header-1')}`);

console.log(`'x-header-2' ${request.headers.has('x-header-2') ? 'exists' : 'does not exist'}`);
 类似资料:
  • 我有一个PHP脚本,它成功地返回一些简单的头以及一个set-cookie头,如果在浏览器中直接调用(或由邮递员)。我可以从chrome DevTools上读到这样的响应标题。但是当我用Axios调用它时,set-cookie头就不会显示出来,浏览器中也没有保存cookie。 我尝试了不同的方法,比如在服务器端更改响应头,并在axios中使用“with Credentials:true”,但都不起作

  • 我试图用Axios向一个需要API密钥作为头的API发出get请求,但我不确定我做错了什么。控制台中有两个错误。1:xhr。js:178个选项https://api.propublica.org/congress/v1403(禁止)。2:加载失败https://api.propublica.org/congress/v1:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“access co

  • 获取当前请求的所有HTTP 请求头信息,如: $headers = $request->header(); print_r($headers); 直接获取某个请求头信息,如: $token = $request->header('XX-Token'); HTTP请求头信息的名称不区分大小写,并且下划线会自动转换为-,所以下面的写法都是等效的: $token = $request->head

  • 获取当前请求的所有HTTP 请求头信息,如: $headers = $request->header(); print_r($headers); 直接获取某个请求头信息,如: $token = $request->header('XX-Token'); HTTP请求头信息的名称不区分大小写,并且下划线会自动转换为-,所以下面的写法都是等效的: $token = $request->head

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

  • 我是一个使用angular的新手,我正在努力学习一点,但我不能使用令牌进行简单的获取。我做了很多研究,最后总是得到这段代码。 对于我的后端,我使用Kotlin/Springboot并配置了Cors。 即使如此,当尝试这样做请求我得到这个错误。 访问位于“”的XMLHttpRequesthttp://localhost:5000/api-v1/来源的帐户/列表 -- 果心js:15713错误Http