INTEGRITY Dokumentace

Hlavičky

Výchozí hlavičky

Při poskytování statických aktiv Workers ve výchozím nastavení přidají k odpovědi několik hlaviček. Jsou to:

Cloudflare si vyhrazuje právo kdykoli připojit k odpovědím se statickými assety nové hlavičky za účelem zlepšení výkonu nebo zabezpečení vaší aplikace Worker.

Vlastní hlavičky

Výchozí hlavičky odpovědí u statických souborů lze přepsat, odebrat nebo doplnit vytvořením prostého textového souboru s názvem _headers bez přípony souboru v adresáři statických prostředků vašeho projektu. Tento soubor se sám o sobě neposkytuje jako statický prostředek, ale zpracuje ho Workers a jeho pravidla se použijí na odpovědi statických prostředků.

Pokud používáte framework, budete mít často adresář s názvem public/ nebo static/, a obvykle obsahuje assety připravené k nasazení, jako jsou favicony, robots.txt soubory a manifesty webu. Tyto soubory se během sestavení zkopírují do výsledného výstupního adresáře, takže je to ideální místo pro vytváření vašich _headers soubor. Pokud nepoužíváte framework, _headers soubor můžete vložit přímo do adresář statických aktiv.

Hlavičky definované v _headers soubor přepíší to, co Cloudflare běžně odesílá.

Přidání hlavičky

Pravidla pro hlavičky se definují ve víceřádkových blocích. První řádek bloku obsahuje URL nebo vzor URL, na který se mají hlavičky pravidla použít. Na dalším řádku musí následovat odsazený seznam názvů a hodnot hlaviček:

[url]
  [name]: [value]

Použití absolutních URL je podporováno, mějte však na paměti, že absolutní URL musí začínat https a zadání portu není podporováno. _headers pravidla při porovnávání s příchozím požadavkem ignorují jeho port a protokol. Například pravidlo jako https://example.com/path by odpovídalo požadavkům na other://example.com:1234/path.

Můžete definovat libovolný počet [name]: [value] párů na dalších řádcích. Například:

# This is a comment
/secure/page
	X-Frame-Options: DENY
	X-Content-Type-Options: nosniff
	Referrer-Policy: no-referrer

/static/*
	Access-Control-Allow-Origin: *
	X-Robots-Tag: nosnippet

https://myworker.mysubdomain.workers.dev/*
	X-Robots-Tag: noindex

Příchozí požadavek, který odpovídá vzorům URL více pravidel, zdědí hlavičky všech těchto pravidel. Při použití předchozího _headers soubor, budou mít následující požadavky přiřazené tyto hlavičky:

Request URL Hlavičky
https://custom.domain/secure/page X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer
https://custom.domain/static/image.jpg Access-Control-Allow-Origin: *
X-Robots-Tag: nosnippet
https://myworker.mysubdomain.workers.dev/home X-Robots-Tag: noindex
https://myworker.mysubdomain.workers.dev/secure/page X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer
X-Robots-Tag: noindex
https://myworker.mysubdomain.workers.dev/static/styles.css Access-Control-Allow-Origin: *
X-Robots-Tag: nosnippet, noindex

Můžete definovat až 100 pravidel pro hlavičky. Každý řádek v _headers soubor má limit 2,000 znaků. Do tohoto limitu se počítá celý řádek včetně mezer, názvu hlavičky a hodnoty.

Pokud se hlavička dvakrát použije v _headers soubor, hodnoty se spojí pomocí čárky jako oddělovače.

Odpojit hlavičku

Výchozí hlavičku nebo hlavičku přidanou obecnějším pravidlem můžete odstranit tak, že před její název vložíte vykřičník a mezeru (! ).

/*
  Content-Security-Policy: default-src 'self';

/*.jpg
  ! Content-Security-Policy

Shoda cesty

Stejné funkce porovnávání URL adres, které _redirects nabízí, je také dostupné pro _headers soubor. Mějte však na paměti, že přesměrování se uplatňují před hlavičkami, takže pokud požadavek odpovídá jak přesměrování, tak hlavičce, má přednost přesměrování.

Splaty

Při porovnávání je splat vzor, který se označuje hvězdičkou (*) tento vzor hladově porovná všechny znaky. V URL smíte použít jen jeden splat.

Nalezenou hodnotu lze v hodnotě hlavičky odkázat jako :splat zástupný symbol.

Zástupné symboly

Zástupný symbol lze definovat pomocí :placeholder_name. Dvojtečka (:) následovaný písmenem označuje začátek zástupného symbolu a název zástupného symbolu, který následuje, smí obsahovat pouze alfanumerické znaky a podtržítka (:[A-Za-z]\w*). Na každý pojmenovaný zástupný symbol lze odkázat jen jednou. Zástupné symboly odpovídají všem znakům kromě oddělovače, kterým je v případě hostitele tečka (.) nebo lomítko (/) a smí to být pouze lomítko (/) pokud je součástí cesty.

Podobně lze shodnutou hodnotu použít v hodnotách hlaviček pomocí :placeholder_name.

/movies/:title
  x-movie-name: You are watching ":title"

Příklady

Cross-Origin Resource Sharing (CORS)

Chcete-li ostatním doménám umožnit načítat všechny statické assety z vašeho Workeru, můžete do _headers soubor:

/*
  Access-Control-Allow-Origin: *

Tím se použije Access-Control-Allow-Origin hlavičku ke každé příchozí URL. Specifikace CORS ovšem povoluje pouze *, null, nebo přesný origin jako platný Access-Control-Allow-Origin hodnoty: vzory se zástupnými znaky (wildcard) v origins nejsou podporovány. Chcete-li povolit CORS z konkrétních URL náhledů, budete to muset ve svém kódu Workeru řešit dynamicky, nikoli prostřednictvím _headers .

Zabraňte zobrazování adres URL workers.dev ve výsledcích vyhledávání

Google a další vyhledávače často podporují X-Robots-Tag hlavičku, aby prohledávačům sdělil, jak se má indexovat váš web.

Chcete-li například zabránit tomu, aby váš *.*.workers.dev URL adres před indexováním přidejte do svého _headers soubor:

https://:version.:subdomain.workers.dev/*
	X-Robots-Tag: noindex
Nakonfigurujte vlastní chování mezipaměti prohlížeče

Pokud máte složku s fingerprintovanými assets (assets, které mají v názvu souboru hash), můžete v prohlížeči nastavit agresivnější ukládání do mezipaměti a zlepšit tak výkon pro opakované návštěvníky:

/static/*
  Cache-Control: public, max-age=31556952, immutable
Posilte zabezpečení aplikace

Clickjackingu můžete zabránit tím, že prohlížečům sdělíte, aby vaši aplikaci nevkládaly do jiné (například pomocí <iframe>) s X-Frame-Options hlavička.

X-Content-Type-Options: nosniff brání prohlížečům interpretovat odpověď jako jiný content-type, než jaký je definovaný pomocí Content-Type hlavička.

Referrer-Policy umožňuje upravit, kolik informací o tom, odkud přicházejí, návštěvníci poskytnou při odchodu z vaší stránky.

Funkce prohlížeče lze v různé míře deaktivovat pomocí Permissions-Policy hlavička (nedávno přejmenována z Feature-Policy).

Pokud potřebujete podrobnou kontrolu nad obsahem své aplikace, Content-Security-Policy hlavička vám umožňuje nastavit řadu bezpečnostních voleb, včetně ovládacích prvků podobných X-Frame-Options hlavička.

/app/*
  X-Frame-Options: DENY
  X-Content-Type-Options: nosniff
  Referrer-Policy: no-referrer
  Permissions-Policy: document-domain=()
  Content-Security-Policy: script-src 'self'; frame-ancestors 'none';

Poznámky pod čarou

  1. Kvůli technickému omezení, které chceme v budoucnu vyřešit, CF-Cache-Status hlavička není vždy zcela přesná. Mohou nastat falešně pozitivní i falešně negativní výsledky, i když jen zřídka. Tuto hlavičku je proto třeba považovat za hlavičku vracející „pravděpodobnostní“ výsledek.