在 cloudflare worker header.set('Set-Cookie' 函数中的 'Set-Cookie' header 中设置多个 cookie

Set more than one cookie in the 'Set-Cookie' header in a cloudflare worker header.set('Set-Cookie' function

我正在尝试使用 cloudfare worker 在将响应发送到客户端之前将 2 个 cookie key/value 对添加到响应中。

不幸的是,cloudflare worker 的所有文档都说使用 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 header,如果调用两次只会覆盖现有的 header。

我试过调用函数两次,只有最后一个值进来:

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='/';");

我试过在一个 header 中传递 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 key/value 对,但第一个键值设置为“1,val2=2”:

response.headers.set('Set-Cookie', "val1=1, val2=2; Expires=Wed, 21 Oct 2020 07:28:00 GMT; Path='/';");

None 这些作品。

我发现的唯一解决方法是将 vars 捆绑到一个变量中,然后在客户端使用 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 worker 在一个响应中应用了 2 个单独的 cookie header?谢谢。

Headers.append()https://developer.mozilla.org/en-US/docs/Web/API/Headers/append

The difference between set() and append() is that if the specified header already exists and accepts multiple values, set() will overwrite the existing value with the new one, whereas append() will append the new value onto the end of the set of values.