INTEGRITY Документация

Headers

Контекст

Все заголовки HTTP-запросов и ответов доступны через Headers API.

Если у заголовка несколько значений, они объединяются в одну строку через запятую. Это означает, что Headers.get всегда возвращает строку или null значение. Это применимо ко всем именам заголовков, кроме Set-Cookie, для которого требуется Headers.getAll. Это описано ниже в разделе Различия.

let headers = new Headers();

headers.get('x-foo'); //=> null

headers.set('x-foo', '123');
headers.get('x-foo'); //=> "123"

headers.set('x-foo', 'hello');
headers.get('x-foo'); //=> "hello"

headers.append('x-foo', 'world');
headers.get('x-foo'); //=> "hello, world"

Различия

Реализация Workers для Headers API в нескольких аспектах отличается от веб-стандарта. Эти отличия сделаны намеренно и отражают серверную природу среды выполнения Workers.

getAll() метод

Несмотря на то что Headers.getAll метод устарел в веб-браузерах, но Workers по-прежнему предоставляет его для использования с Set-Cookie заголовок. Это связано с тем, что cookie часто содержат строки с датами, включающими запятые. Из-за этого разбор нескольких значений в Set-Cookie заголовок затруднительным.

Любые попытки использовать Headers.getAll с другими именами заголовков вызовет ошибку. Краткая история Headers.getAll доступен в этом Issue в GitHub.

Из-за RFC 6265 запрещающей объединение нескольких Set-Cookie заголовков в один заголовок, Headers.append метод позволяет задать несколько Set-Cookie заголовки ответа вместо того, чтобы добавлять значение к уже существующему заголовку.

const headers = new Headers();

headers.append("Set-Cookie", "cookie1=value_for_cookie_1; Path=/; HttpOnly;");
headers.append("Set-Cookie", "cookie2=value_for_cookie_2; Path=/; HttpOnly;");

console.log(headers.getAll("Set-Cookie"));
// Array(2) [ cookie1=value_for_cookie_1; Path=/; HttpOnly;, cookie2=value_for_cookie_2; Path=/; HttpOnly; ]

USVString тип возвращаемого значения

В Cloudflare Workers Headers.get метод возвращает USVString вместо ByteString, который определён веб-стандартом. В большинстве сценариев это не должно приводить к заметным отличиям. Чтобы сравнить различия между этими двумя классами строк, см. Пример Playground.

Заголовки Cloudflare

Cloudflare добавляет ряд собственных заголовков во входящие запросы и исходящие ответы. Некоторые из них используются для внутреннего учёта и отслеживания, но многие могут пригодиться и в ваших приложениях, в том числе в Workers.

Список задокументированных заголовков запросов Cloudflare см. в HTTP-заголовки Cloudflare.