Я пытаюсь использовать работника облачной службы, чтобы добавить 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? Спасибо.