我正在尝试使用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的运气好吗?谢谢。
答案 0 :(得分:2)
有$ bin/magento deploy:mode:show
:https://developer.mozilla.org/en-US/docs/Web/API/Headers/append
set()和append()之间的区别在于,如果指定了 标头已经存在并接受多个值,set()将 用新值覆盖现有值,而append()将 将新值附加到值集的末尾。