Mic*_*ael 2 cookies http-headers cloudflare-workers
我正在尝试使用 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;
Run Code Online (Sandbox Code Playgroud)
这仅允许您设置一个 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='/';");
Run Code Online (Sandbox Code Playgroud)
我尝试在一个标题中传递 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='/';");
Run Code Online (Sandbox Code Playgroud)
我尝试传递 2 个 cookie 键/值对,但第一个键值设置为“1, val2=2”:
response.headers.set('Set-Cookie', "val1=1, val2=2; Expires=Wed, 21 Oct 2020 07:28:00 GMT; Path='/';");
Run Code Online (Sandbox Code Playgroud)
这些都不起作用。
我发现的唯一解决方法是将 vars 捆绑到一个变量中,然后在客户端使用 JS 解包并应用该变量:
response.headers.set('Set-Cookie', "jsVal={val1:1, val2:2}; Expires=Wed, 21 Oct 2020 07:28:00 GMT; Path='/';");
Run Code Online (Sandbox Code Playgroud)
.. 然后在 js 文件中应用 2 个 cookie 值。显然这并不理想。
有没有人通过 cloudflare 工作人员在一个响应标头中应用 2 个单独的 cookie 有任何运气?谢谢。
小智 6
有Headers.append():https : //developer.mozilla.org/en-US/docs/Web/API/Headers/append
set() 和 append() 的区别在于,如果指定的标头已经存在并且接受多个值,则 set() 将用新值覆盖现有值,而 append() 会将新值附加到值集。
| 归档时间: |
|
| 查看次数: |
1456 次 |
| 最近记录: |