← Cloudflare Workers / workers / runtime-apis
Hlavičky
Kontext
Všechny hlavičky HTTP požadavků a odpovědí jsou dostupné prostřednictvím Headers API ↗.
Pokud má název hlavičky více hodnot, tyto hodnoty se spojí do jednoho řetězce odděleného čárkami. To znamená, že Headers.get vždy vrátí řetězec nebo null hodnota. To platí pro všechny názvy hlaviček kromě Set-Cookie, který vyžaduje Headers.getAll. To je popsáno níže v Rozdíly.
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"Rozdíly
Workers implementace pro Headers API se v několika ohledech liší od webového standardu. Tyto rozdíly jsou záměrné a odrážejí serverovou povahu prostředí Workers runtime.
getAll() metoda
Přestože Headers.getAll metoda byla ve webových prohlížečích označena za zastaralou, Workers ale tuto metodu nadále poskytuje pro použití s Set-Cookie hlavička. Je to proto, že cookies často obsahují řetězce s datem, které obsahují čárky. To může komplikovat parsování více hodnot v Set-Cookie hlavičku obtížnou.
Jakékoli pokusy použít Headers.getAll s jinými názvy hlaviček vyvolá chybu. Stručná historie Headers.getAll je dostupná v tomto GitHub issue ↗.
Set-Cookie zpracování
Kvůli RFC 6265 ↗ která zakazuje slučování více Set-Cookie hlaviček do jedné hlavičky se Headers.append metoda umožňuje nastavit více Set-Cookie hlaviček odpovědi místo připojení hodnoty k existující hlavičce.
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 návratový typ
V Cloudflare Workers Headers.get metoda vrací USVString ↗ místo ByteString ↗, který je definován webovým standardem. Ve většině scénářů by to nemělo mít žádný patrný dopad. Pro porovnání rozdílů mezi těmito dvěma třídami řetězců si přečtěte Ukázka Playgroundu ↗.
hlavičky Cloudflare
Cloudflare nastavuje řadu vlastních hlaviček u příchozích požadavků a odchozích odpovědí. Některé z nich Cloudflare používá pro vlastní sledování a evidenci, mnohé z nich se ale mohou hodit i vašim vlastním aplikacím, respektive Workers.
Seznam zdokumentovaných hlaviček požadavků Cloudflare najdete v Cloudflare HTTP headers.
Související zdroje
- Protokolování hlaviček do konzole - Projděte si, jak logovat hlavičky v konzoli.
- Cloudflare HTTP headers - Obsahuje seznam konkrétních hlaviček, které přidává Cloudflare.