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

时间:2019-07-02 02:34:17

标签: 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;

这仅允许您设置一个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='/';");

这些工作都没有。

我发现的唯一解决方法是将var捆绑为一个变量,然后在客户端使用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的运气好吗?谢谢。

1 个答案:

答案 0 :(得分:2)

$ bin/magento deploy:mode:show https://developer.mozilla.org/en-US/docs/Web/API/Headers/append

  

set()和append()之间的区别在于,如果指定了   标头已经存在并接受多个值,set()将   用新值覆盖现有值,而append()将   将新值附加到值集的末尾。