Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在ServiceWorker中为响应设置Cookie_Javascript_Performance_Service Worker - Fatal编程技术网

Javascript 如何在ServiceWorker中为响应设置Cookie

Javascript 如何在ServiceWorker中为响应设置Cookie,javascript,performance,service-worker,Javascript,Performance,Service Worker,在由页面导航触发的获取处理程序中,我尝试执行以下操作: return event.respondWith(new Response('Hello!', { headers: { "Set-Cookie": "TestCookie=foo; path=/; Max-Age=60;" "TestHeader": "foo" } })); 然后我在浏览器中加载了任何URL,并得到了“Hello!”正文。在Chrome开发工具中,我看到网络面板中设置的TestHeader。但是

在由页面导航触发的获取处理程序中,我尝试执行以下操作:

return event.respondWith(new Response('Hello!', {
  headers: {
    "Set-Cookie": "TestCookie=foo; path=/; Max-Age=60;"
    "TestHeader": "foo"
  }
}));
然后我在浏览器中加载了任何URL,并得到了“Hello!”正文。在Chrome开发工具中,我看到网络面板中设置的
TestHeader
。但是cookie不会显示在网络面板中,也不会显示在应用程序>Cookies查看器中<代码>文档。cookie也无法生成它

请求由页面导航启动,因此没有机会在“从浏览器获取”选项卡上设置
凭据:“include”


是否可以向ServiceWorker中的响应添加cookie?如果没有,是否可以以任何其他方式写入cookie?

获取规范中有一些相关信息

根据:

禁止响应标头名称是一个标头名称,它是 以下内容之一的字节不区分大小写匹配:

  • 设置Cookie
  • Set-Cookie2
然后根据以下第6项:

否则,如果guard是“response”,并且name是禁止的响应头名称,则返回

集Cookie
头中添加此限制适用于使用初始头集构造新的
响应
对象,或在事实之后向现有
响应
对象添加头

有一项计划是在服务人员内部添加对读写Cookie的支持,但这将使用一种机制,而不是
响应
对象中的
设置Cookie
头。中有关于计划的更多信息。

您可以尝试以下操作:

async function handleRequest(request) {
    let response = await fetch(request.url, request);       
    // Copy the response so that we can modify headers.
    response = new Response(response.body, response)
    response.headers.set("Set-Cookie", "test=1234");
    return response;
}