Установите более одного файла cookie в заголовке «Set-Cookie» в рабочем файле cloudflare header.set (функция «Set-Cookie»

Я пытаюсь использовать облачного работника, чтобы добавить 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. Очевидно, что это не идеально.

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

Запись файлов cookie в файл с помощью XSS R
Запись файлов cookie в файл с помощью XSS R
Привет всем :), здесь я продемонстрирую получение cookies, которые будут сохранены в виде txt файла, используя дефект XSS Reflected.
2
0
1 914
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

The difference between set() and append() is that if the specified header already exists and accepts multiple values, set() will overwrite the existing value with the new one, whereas append() will append the new value onto the end of the set of values.

Боже, как просто. Как я это пропустил. Спасибо друг. Могу подтвердить, что это работает в облачном воркере.

Michael 04.07.2019 06:51

Другие вопросы по теме