Nginx

Jak používat CORS s Nginx

Jak používat CORS s Nginx

Co je CORS

CORS, také známý jako sdílení zdrojů mezi zdroji, je technika používaná v moderních webových prohlížečích, která řídí přístup k prostředkům hostovaným na webovém serveru. CORS používá k určení, zda má požadovaný prostředek oprávnění k odeslání do prohlížeče, další záhlaví, jako je původ, původ řízení přístupu a mnoho dalších. Primárním účelem CORS je zabránit webové aplikaci spuštěné ve webovém prohlížeči v přístupu k prostředkům hostovaným v jiném původu, když neexistuje povolení, což znamená, že webová aplikace nemůže stahovat prostředky, jako jsou obrázky, skripty, css jako jakýkoli obsah atd. když nejsou hostovány ve stejném původu (obvykle by všechny měly být ve stejné doméně) jako webová aplikace, pokud není server nakonfigurován tak, aby toto chování umožňoval. Díky této implementaci ve webovém prohlížeči mohou uživatelé chránit svá data před neoprávněnými stranami. Hacker může tajně upravovat webovou stránku, zatímco je uprostřed připojení, aby narušil podnikání uživatele nebo získal přístup k cenným datům. Existují však také výhody CORS, například umožňuje vývojářům načítat zdroje z jiného původu kvůli efektivitě nákladů nebo jednoduše pohodlí. V takovém případě musí upravit svůj webový server, aby takové žádosti povolil. Tento článek ukazuje, jak to snadno provést na webovém serveru Nginx.

Co spouští požadavek CORS

Ne všechny požadavky spouští požadavek CORS, protože prostředky jsou obvykle hostovány ve stejném původu jako webová aplikace. Pokud je to jiné, spustí se CORS. CORS má dva typy požadavků, jednoduchý požadavek a CORS předletový požadavek.

Simple Request funguje jako běžný požadavek, webový prohlížeč pošle serveru požadavek na stažení konkrétního zdroje, když jej uživatel zahájil, pak webový server zkontroluje původ požadavku, porovná jej s pravidly na webovém serveru, pokud je uzavřeno, zdroj je dodán. Tento typ požadavku používá záhlaví OIRIGN a ACCESS-CONTROL-ALLOW-ORIGIN k určení, zda má být zdroj dodán nebo ne. Jednoduchý požadavek se aktivuje pouze v případě, že se použijí metody požadavku jako GET, HEAD, POST a použijí se záhlaví jako Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width. I pak ne všechny typy obsahu spustí jednoduchý požadavek. Zde pouze jednoduchý typ kódování spustí jednoduchý požadavek.

Předběžný typ požadavku je poněkud odlišný, protože v prvním kole není přímý přístup ke zdrojům. Když se výše uvedené podmínky nějak změní, buď pomocí jiné hlavičky požadavku nebo jiného typu obsahu, spustí se předletový požadavek. V Předběžných požadavcích se webový prohlížeč nejprve ujistí, že má přístup k prostředku prostřednictvím komunikace s webovým prohlížečem, poté, když webový prohlížeč odpověděl v pořádku (HTTP 200), odešle další požadavek na stažení prostředku. Využívá metodu požadavku HTTP OPTION k zahájení prvního požadavku, poté ke stažení prostředků používá typy požadavků typu GET, POST.

Jak nakonfigurovat Nginx na podporu požadavků CORS

Tato část ukazuje, jak nakonfigurovat webový server nginx tak, aby umožňoval sdílení prostředků mezi zdroji. To lze provést pouze v případě, že má vývojář přístup k webovému serveru, protože to zahrnuje úpravu konfiguračního souboru Nginx.

Pomocí následujícího jednoduchého fragmentu kódu povolíte požadavky CORS. To musí být zkopírováno do výchozího souboru služby nginx v Ubuntu nebo jiné platformě.

umístění \
if ($ request_method = 'MOŽNOSTI')
add_header 'Access-Control-Allow-Origin' https: // localhost;
add_header 'Access-Control-Allow-Methods "POST, OPTIONS';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type "text / plain; charset = utf-8';
návrat 204;

if ($ request_method = 'POST')
add_header 'Access-Control-Allow-Origin "https: // localhost;
add_header 'Access-Control-Allow-Methods' 'POST';

Fragment základního kódu je uveden výše. Obsahuje direktivy jako request_method, add_header k identifikaci typu požadavku a nastavení záhlaví odpovědi pro prohlížeč. Záhlaví Access-control-allow-origin definuje, k jakému původu má prostředek přístup, například pokud webová aplikace hostovaná v github chce získat přístup k obrázku hostovanému v myOwnServer.com, pak by měla být adresa URL github použita jako hodnota směrnice Access-control-allow-origin v myOwnServer.com, pak kdykoli webová aplikace hostovaná v github odešle požadavky na myOwnServer.com ke stažení obrazového souboru, všem těmto požadovaným je uděleno povolení. Záhlaví Access-control-allow-method definuje, jaké typy požadavků podporuje webová aplikace, která odesílá požadavky, a zbytek hlaviček je pro jeho maximální věk pro ukládání požadavků do mezipaměti a podporovaný typ obsahu.

Jak je popsáno výše, po dokončení požadavku OPTION odešle prohlížeč další požadavek na stažení prostředků, pokud byl první požadavek úspěšný, jeho záhlaví jsou nastavena v první request_method if brackets.

Kromě výše uvedených směrnic existují v Nginxu některé další důležité směrnice, které lze použít v požadavcích CORS. Jednou z nejdůležitějších směrnic je access-control-allow-headers, co dělá, je nastavit hlavičku odpovědi s povolenými názvy hlaviček pro ověření prohlížeče. Webová aplikace může mít své vlastní záhlaví pro různé účely, a pokud se takové záhlaví vyskytnou v následných požadavcích po počátečním požadavku OPTIONS, měl by webový server před sdílením požadovaného prostředku povolit všechny tyto záhlaví.

Je důležité, aby tento fragment kódu byl na správném místě ve výchozím souboru Nginx, protože Nginx provádí různé bloky umístění v závislosti na shodné adrese URL, pokud takový blok umístění tento fragment kódu neobsahuje, pak se vůbec nespustí, a proto je důležité použít toto ve všech blocích umístění pro bezpečnou stránku. Mezi důležité bloky umístění patří Obrázky, PHP (~ \.php $), CSS atd.… bloky.

Po uložení výše uvedeného fragmentu kódu uložte soubor Nginx a znovu načtěte službu Nginx, aby se změny projevily.

Závěr

CORS, je známé jako sdílení zdrojů napříč původem, a je to technika pro řízení přístupu k prostředkům. Těmito prostředky může být libovolný soubor od obrázku po soubor javascript. Primárním účelem CORS je zpřísnit zabezpečení webových aplikací, aby se zabránilo útokům man in the middle. CORS však může mít také výhody. V takovém případě musí být CORS zapnutý, protože to není ve výchozím nastavení povoleno. Základní typ požadavku CORS je jednoduchý typ požadavku, používá pouze direktivy ORIGIN a ACCESS-CONTROL-ALLOW-ORIGIN a díky tomu může Nginx udělit webovému prohlížeči oprávnění k přístupu k požadovanému prostředku v závislosti na původu. V každém případě je CORS docela užitečný a měl by být používán opatrně.

Hry Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Úvod do hry Civilization 6 je moderní pojetí klasického konceptu představeného v sérii her Age of Empires. Myšlenka byla docela jednoduchá; začali bys...
Hry Jak nainstalovat a hrát Doom na Linuxu
Jak nainstalovat a hrát Doom na Linuxu
Úvod do Doom Série Doom vznikla v 90. letech po vydání původního Doomu. Byl to okamžitý hit a od té doby herní série získala řadu ocenění a původní Do...
Hry Vulkan pro uživatele Linuxu
Vulkan pro uživatele Linuxu
S každou novou generací grafických karet vidíme, že vývojáři her posouvají hranice grafické věrnosti a přibližují se k fotorealismu. Ale navzdory vešk...