Co je CORS?
sobes.tech AI
Odpověď od AI
CORS (Cross-Origin Resource Sharing) — je mechanismus, který umožňuje webovým stránkám žádat zdroje z jiného domény, portu nebo protokolu, než ze kterého byla načtena samotná stránka. To se provádí pomocí doplňkových HTTP hlaviček.
Ve výchozím nastavení používají prohlížeče politiku Same-Origin Policy (SOP), která zakazuje skriptům běžícím na jedné stránce přístup k datům z jiného zdroje (domény, portu, protokolu). CORS tuto politiku zmírňuje kontrolovaným způsobem tím, že serveru umožňuje explicitně povolit cross-domain požadavky.
Jak CORS funguje:
- Jednoduchý požadavek: Pokud požadavek splňuje určité kritéria (například používá metodu GET nebo POST, jsou povoleny pouze určité hlavičky), prohlížeč odešle požadavek přímo s doplňkovou hlavičkou
Origin, která uvádí zdroj požadavku. Server při obdržení této hlavičky může odpovědět hlavičkouAccess-Control-Allow-Origin, která uvádí povolený zdroj. - Preflight požadavek: Pro "nepřímé" požadavky (například s použitím metod
PUT,DELETE, nebo s uživatelskými hlavičkami) prohlížeč nejprve odešle předběžný (preflight)OPTIONS-požadavek. Tento požadavek se ptá serveru, zda je povoleno odeslat cílový požadavek. Server odpovídá hlavičkami, které uvádějí povolené metody, hlavičky a zdroje. Pokud je preflight úspěšný, prohlížeč odešle samotný požadavek.
Hlavní hlavičky CORS:
Origin: Odesílá prohlížeč v požadavku, uvádí zdroj (doménu, port, protokol) stránky, která požadavek iniciovala.Access-Control-Allow-Origin: Odesílá server v odpovědi, uvádí zdroj, kterému je povoleno odpověď přijmout. Může být konkrétní doména,*(libovolný zdroj), nebo dynamicky generováno serverem na základě hlavičkyOrigin.Access-Control-Allow-Methods: Odesílá server v odpovědi na preflight požadavek, uvádí povolené HTTP metody (GET, POST, PUT, DELETE atd.).Access-Control-Allow-Headers: Odesílá server v odpovědi na preflight požadavek, uvádí povolené hlavičky požadavku.Access-Control-Allow-Credentials: Odesílá server v odpovědi, uvádí, zda je povoleno přijímat cookies a jiné přihlašovací údaje v požadavku.
Příklad hlaviček odpovědi serveru povolujících požadavky z https://example.com:
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
CORS je nezbytný pro správnou funkčnost mnoha webových aplikací využívajících cross-origin AJAX požadavky, jako je API komunikace, načítání fontů, používání webových fontů z CDN apod. Správné nastavení CORS na serveru je kritické pro bezpečnost a funkčnost aplikace.