Jak nastavit CORS hlavičky
Někdy potřebují wbové aplikace přistupovat k souborů (obrázky, videa, datové soubory atd.) z jiných serverů. To s sebou přináší spoustu bezpečnostních rizik. Například nějaký zlomyslný kód by mohl využít cookies ve vašem prohlížeči a přistupovat pod vaší identitou do nějaké aplikace. Proto je důležité vědět, jak nastavit CORS hlavičky na serveru.
CORS (Cross-Origin Resource Sharing, sdílení zdrojů napříč původci/zdroji) hlavičky zabraňují náhodnému kódu přistupovat k údajům na libovolném serveru. Bohužel to často přináší komplikace i do naprosto legitimního a oprávněných využití.

Pokud byste si například chtěli vystavit soubory s vlastními mapovými vrstvami pro použití v Lumeerovi, je velká pravděpodobnost, že hostující server Vaše požadavky z Lumeera zablokuje. Může za to právě nastavení CORS hlaviček.
Aby bylo možné takové soubory poskytovat z nějakého serveru do Lumeera nebo jakékoliv vaší aplikace, je potřeba povolit tuto možnost v nastavené serveru. Můžete přímo kontaktovat správce serveru, aby přidal adresu https://get.lumeer.io mezi povolené doménu, nebo si můžete (pokud sami máte možnost server spravovat) server nastavit sami.
Jak nastavit CORS hlavičky na serveru Apache
Jednoduše přidáte nasládující nastavení do souboru .htaccess v adresáři, odkud se mají stahovat soubory.
Podstata spočívá v tom, že hlavička Allow-Control-Allow-Origin může obsahovat jen jednu adresu serveru zároveň. Musí se proto nastavovat dynamicky. Pokud tedy nechcete nastavit hodnotu *, čímž povolíte všechny požadavky a prakticky znemožníte CORS hlavičkám zabezpečovat váš server.
Musíme také povolit veškeré hlavička, které může vaše aplikace posílat. Pokud víme, že se jedná o bezpečnou aplikaci, je v pořádku jednoduše povolit všechny hlavičky.
Pokud chceme povolit přístup Lumeerovi, bude vypadat pravidlo takto:
<IfModule mod_headers.c>
SetEnvIf Origin "https://get\.lumeer\.io$" AccessControlAllowOrigin=$0
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header add Access-Control-Allow-Headers * env=AccessControlAllowOrigin
Header merge Vary Origin
</IfModule>
Jak nastavit CORS hlavičky na serveru NGINX
Cíl je ten stejný, jan konfigurace vypadá trochu jinak. Nejdříve si ověříme, že se jedná o povolenou aplikaci. Pak si ověříme, že se jedná o povolený protokol. Potom nastavíme příslušné hlavičky:
server {
listen 80;
server_name api.test.com;
location / {
set $cors 0;
if ($http_origin ~ '^https://get\.lumeer\.io)') {
set $cors 1;
}
if ($request_method ~* "(GET|OPTIONS)") {
set $cors 1$cors;
}
# Simple requests
if ($cors = 11) {
add_header "Access-Control-Allow-Origin" "$http_origin";
add_header "Access-Control-Allow-Headers" "*";
}
....
# Handle request
....
}
}