Установите более одного cookie в заголовке «Set-Cookie» в рабочем файле cloud.rear header.set (функция «Set-Cookie» - PullRequest
1 голос
/ 02 июля 2019

Я пытаюсь использовать работника облачной службы, чтобы добавить 2 пары ключ / значение файла cookie в ответ перед отправкой его клиенту.

К сожалению, во всей документации для работников cloudflare говорится, что для установки значения cookie используется функция response.headers.set ('Set-Cookie', xxx):

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 куки в одном заголовке, разделенных запятой, но только один приходит:

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. Очевидно, это не идеально.

Кому-нибудь посчастливилось применить 2 отдельных куки в одном заголовке ответа через работника cloudflare? Спасибо.

1 Ответ

2 голосов
/ 02 июля 2019

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

Разница между set () и append () заключается в том, что если указано заголовок уже существует и принимает несколько значений, set () перезаписать существующее значение новым, тогда как append () добавьте новое значение в конец набора значений.

...