【问题标题】:Set more than one cookie in the 'Set-Cookie' header in a cloudflare worker header.set('Set-Cookie' function在 cloudflare worker header.set('Set-Cookie' 函数的 'Set-Cookie' 标头中设置多个 cookie
【发布时间】:2019-11-12 15:17:17
【问题描述】:

我正在尝试使用 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 worker 在一个响应标头中应用 2 个单独的 cookie?谢谢。

【问题讨论】:

    标签: cookies http-headers cloudflare-workers


    【解决方案1】:

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

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

    【讨论】:

    • 天啊,太简单了。我怎么错过了。谢了哥们。可以确认这在 cloudflare 工作人员中有效。
    猜你喜欢
    • 2020-08-16
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多