CORS
Zkratka pro „Cross-Origin Resource Sharing“. CORS umožňuje skriptům na webových stránkách požadovat prostředky z jiných domén. Většina webových prohlížečů tyto typy požadavků ve výchozím nastavení z bezpečnostních důvodů blokuje.
Webová stránka může požadovat prostředky z jiné domény, pokud požadavky pocházejí z HTML. Například část <head> může odkazovat na prostředky, jako jsou soubory CSS, písma a soubory JS z jiných domén. Patří mezi ně například skripty Google Analytics, knihovny jQuery a písma hostovaná na jiném serveru. Podobně může část <body> požadovat obrázky z CDN nebo jiné domény. Požadavky na prostředky z jiné domény v HTML nevyžadují oprávnění CORS.
Když prvek skriptu nebo iframe provádí požadavek na prostředek z jiné domény, je vyžadován CORS. Například metoda AJAX – která se spouští po načtení stránky – nemůže požadovat prostředek z jiné domény. CORS toto výchozí nastavení prohlížeče obejde a umožní požadavku projít.
CORS se implementuje pomocí hlaviček HTTP pro „řízení přístupu“. Správce serveru může přidat nebo upravit hlavičky odpovědi, které se odešlou do prohlížeče klienta při přístupu na webovou stránku. Tato nastavení, která lze použít pro servery Apache a IIS, mohou platit pro konkrétní web nebo pro celý server. Níže jsou uvedeny běžné hlavičky požadavku a odpovědi:
Hlavičky požadavku CORS:
- Origin
- Access-Control-Request-Method
- Access-Control-Request-Headers
Hlavičky odpovědi CORS:
- Access-Control-Allow-Origin
- Access-Control-Allow-Methods
- Access-Control-Expose-Headers
Příklad CORS
Pokud skript na webu techterms.com požaduje prostředek z webu sharpened.com pomocí akce GET, může odeslat následující hlavičky požadavku:
Origin: https://techterms.com
Access-Control-Request-Method: GET
Aby sharpened.com požadavku vyhověl, může odpovědět následujícími hlavičkami:
Access-Control-Allow-Origin: https://techterms.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Origin lze nastavit pro konkrétní domény nebo použít zástupný znak pomocí hvězdičky (*). Nastavení zástupného znaku umožňuje požadavky na prostředky z jiných domén ze všech domén, což může představovat bezpečnostní riziko. Access-Control-Allow-Methods lze nastavit na PUT, POST, DELETE a další metody, včetně nastavení zástupného znaku (*), které povolí všechny metody.
Otestujte své znalosti