cookies - 在 cloudflare worker header.set('Set-Cookie' 函数的 'Set-Cookie' 标头中设置多个 cookie
问题描述
我正在尝试使用 cloudfare 工作人员将 2 个 cookie 键/值对添加到响应中,然后再将其发送到客户端。
不幸的是,cloudflare 工作人员的所有文档都说要使用 response.headers.set('Set-Cookie',xxx) 函数来设置 cookie 值:
let response = await fetch(request);
response = new Response(response.body, response);
response.headers.set('Set-Cookie', "val1=x; Expires=Wed, 21 Oct 2020 07:28:00 GMT; Path='/';");
return response;
这只允许您设置一个 cookie 标头,如果调用两次只会覆盖现有的标头。
我已经尝试调用该函数两次,只有最后一个值进来:
response.headers.set('Set-Cookie', "val1=1; Expires=Wed, 21 Oct 2020 07:28:00 GMT; Path='/';");
response.headers.set('Set-Cookie', "val2=2; Expires=Wed, 21 Oct 2020 07:28:00 GMT; Path='/';");
我尝试在一个标头中传递 2 个 cookie,用逗号分隔,但只有一个进入:
response.headers.set('Set-Cookie', "val1=1; Expires=Wed, 21 Oct 2020 07:28:00 GMT; Path='/';, val2=2; Expires=Wed, 21 Oct 2020 07:28:00 GMT; Path='/';");
我尝试传递 2 个 cookie 键/值对,但第一个键值设置为“1,val2=2”:
response.headers.set('Set-Cookie', "val1=1, val2=2; Expires=Wed, 21 Oct 2020 07:28:00 GMT; Path='/';");
这些都不起作用。
我发现的唯一解决方法是将变量捆绑到一个变量中,然后在客户端使用 JS 解包并应用变量:
response.headers.set('Set-Cookie', "jsVal={val1:1, val2:2}; Expires=Wed, 21 Oct 2020 07:28:00 GMT; Path='/';");
.. 然后在 js 文件中应用 2 个 cookie 值。显然这并不理想。
有没有人有幸通过 cloudflare 工作人员在一个响应标头中应用 2 个单独的 cookie?谢谢。
解决方案
有Headers.append()
:https ://developer.mozilla.org/en-US/docs/Web/API/Headers/append
set() 和 append() 的区别在于,如果指定的 header 已经存在并且接受多个值,set() 将用新值覆盖现有值,而 append() 会将新值追加到末尾一组值。
推荐阅读
- php - Laravel whereIn 不返回结果
- angular - 如何在 Angular 中使用按钮作为表单控件?
- javascript - 单击时显示特定的 php 数据
- javascript - 有没有办法将特定单词超链接到 javascript 中的另一个 URL?
- odoo - 是否可以通过模型 2 中的按钮控制/更改模型 1 中状态栏的状态?(奥多 13)
- php - php 检查特定时区是否已过 24 小时
- c++ - 以下是什么:C++ 多态中的 int className(baseClassName** obj,int a)?
- r - 无法通过 RStudio Server 在 Linux 上安装 SingleCellExperiment R 包
- javascript - 切换密码可见性眼睛时出错,未捕获的 ReferenceError:代码中分配的左侧无效
- javascript - 如何从 merge-images.js 返回一个承诺的纯值?