Nginx

Ako používať CORS s Nginxom

Ako používať CORS s Nginxom

Čo je CORS

CORS, tiež známy ako zdieľanie krížových zdrojov, je technika používaná v moderných webových prehliadačoch, ktorá riadi prístup k prostriedkom hostovaným na webovom serveri. CORS používa na určenie toho, či požadovaný zdroj má povolenie na odoslanie do prehliadača, ďalšie hlavičky, napríklad origin, access-control-origin a mnoho ďalších. Primárnym účelom CORS je zabrániť webovej aplikácii bežiacej vo webovom prehliadači v prístupe k prostriedkom hostovaným v inom pôvode, keď na to nemá povolenie, čo znamená, že webová aplikácia nemôže sťahovať prostriedky, ako sú obrázky, skripty, css ako akýkoľvek obsah atď. keď nie sú hostené v rovnakom pôvode (zvyčajne by mali byť všetky v rovnakej doméne) ako webová aplikácia, pokiaľ nie je server nakonfigurovaný na povolenie tohto správania. Vďaka tejto implementácii vo webovom prehliadači môžu používatelia chrániť svoje údaje pred neoprávnenými stranami. Hacker môže tajne upravovať webovú stránku, keď je uprostred pripojenia, aby narušil podnikanie používateľa alebo získal prístup k cenným údajom. Existujú však aj výhody CORS, ako napríklad to, že umožňuje vývojárom načítať zdroje iného pôvodu z dôvodu nákladovej efektívnosti alebo jednoduchého pohodlia. V takom prípade musia upraviť svoj webový server, aby umožňoval takéto požiadavky. Tento článok ukazuje, ako to ľahko urobiť na webovom serveri Nginx.

Čo spúšťa požiadavka CORS

Nie všetky požiadavky spúšťajú požiadavku CORS, pretože prostriedky sú obvykle hostené v rovnakom pôvode ako webová aplikácia. Ak je to iné, spustí sa CORS. CORS má dva typy požiadaviek, jednoduchú požiadavku a CORS predletovú požiadavku.

Simple Request funguje ako bežná požiadavka, webový prehliadač pošle serveru požiadavku na stiahnutie konkrétneho prostriedku, keď ho používateľ inicioval, potom webový server skontroluje pôvod požiadavky a porovná ju s pravidlami na webovom serveri, ak je zhoduje, zdroj sa dodáva. Tento typ žiadosti používa hlavičky OIRIGN a ACCESS-CONTROL-ALLOW-ORIGIN na určenie, či sa má zdroj dodať alebo nie. Jednoduchá požiadavka sa spustí, iba ak sa použijú metódy žiadosti ako GET, HEAD, POST a hlavičky ako Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width. Ani potom však nie všetky typy obsahu spustia jednoduchú žiadosť. Jednoduchú požiadavku tu spustia iba typy kódovania formulárov.

Typ predletovej žiadosti je dosť odlišný, pretože v prvom kole neexistuje priamy prístup k zdrojom. Keď sa vyššie uvedené podmienky nejako zmenia, či už pomocou inej hlavičky požiadavky alebo iného typu obsahu, spustí sa predletová požiadavka. V prípade Predbežných požiadaviek sa webový prehliadač najskôr uistí, že má prístup k prostriedku komunikáciou s webovým prehliadačom, potom keď webový prehliadač odpovie v poriadku (HTTP 200), potom odošle ďalšiu požiadavku na stiahnutie prostriedku. Na spustenie prvej požiadavky využíva metódu požiadavky HTTP OPTION, potom na stiahnutie zdrojov používa typy žiadostí typu GET, POST.

Ako nakonfigurovať Nginx na podporu požiadaviek CORS

Táto časť ukazuje, ako nakonfigurovať webový server nginx tak, aby umožňoval zdieľanie prostriedkov medzi pôvodmi. Toto je možné vykonať iba v prípade, že má vývojár prístup na webový server, pretože to vyžaduje úpravu konfiguračného súboru Nginx.

Pomocou nasledujúceho jednoduchého útržku kódu povolíte žiadosti CORS. Toto je potrebné skopírovať do predvoleného súboru služby nginx v Ubuntu alebo na akejkoľvek inej platforme.

umiestnenie \
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ý vyššie. Obsahuje smernice ako request_method, add_header na identifikáciu typu požiadavky a nastavenie hlavičky odpovede pre prehliadač, aby sa čítalo. Hlavička Access-control-allow-origin definuje, k akému pôvodu má zdroj prístup, napríklad ak chce webová aplikácia hostená v github získať prístup k obrázku hostenému v myOwnServer.com, potom by sa adresa URL github mala použiť ako hodnota smernice Access-control-allow-origin v myOwnServer.com, potom kedykoľvek webová aplikácia hostená v github odošle požiadavky na myOwnServer.com na stiahnutie obrazového súboru, všetkým týmto požadovaným je udelené povolenie. Hlavička metódy access-control-allow-method definuje, aké typy požiadaviek podporuje webová aplikácia, ktorá odosiela žiadosti, potom zvyšok hlavičiek predstavuje maximálny vek na ukladanie do vyrovnávacej pamäte požiadaviek a podporovaný typ obsahu.

Ako je popísané vyššie, po dokončení požiadavky OPTION prehľadávač odošle ďalšiu žiadosť o stiahnutie zdrojov, ak bola prvá požiadavka úspešná, jej hlavičky sú nastavené v prvej request_method if brackets.

Okrem vyššie uvedených smerníc existujú v Nginxe aj niektoré ďalšie dôležité smernice, ktoré sa dajú použiť v požiadavkách CORS. Jednou z najdôležitejších smerníc je access-control-allow-headers, čo robí, je nastaviť hlavičku odpovede s povolenými názvami hlavičiek pre prehliadač na overenie. Webová aplikácia môže mať svoje vlastné hlavičky na rôzne účely, a ak sa tieto hlavičky vyskytujú v následných požiadavkách po počiatočnej požiadavke OPTIONS, potom by mal všetky tieto hlavičky povoliť webový server pred zdieľaním požadovaného prostriedku.

Je dôležité, aby tento útržok kódu bol na správnom mieste v predvolenom súbore Nginx, pretože Nginx vykonáva rôzne bloky umiestnenia v závislosti od priradenej adresy URL, ak taký blok umiestnenia neobsahuje tento útržok kódu, potom sa nespustí vôbec, a preto je dôležité použiť túto položku vo všetkých blokoch umiestnenia pre bezpečnú stránku. Medzi dôležité bloky umiestnenia patria Obrázky, PHP (~ \.php $), CSS, atď ... bloky.

Po uložení vyššie uvedeného fragmentu kódu uložte súbor Nginx a znova načítajte službu Nginx, aby sa zmeny prejavili.

Záver

CORS, je známe ako zdieľanie zdrojov krížového pôvodu, a je to technika na riadenie prístupu k zdrojom. Týmito zdrojmi môže byť akýkoľvek súbor od obrázka po súbor javascript. Primárnym účelom CORS je sprísniť zabezpečenie webových aplikácií, aby sa zabránilo útokom človeka v prostriedku. Aj CORS však môže mať výhody. V takom prípade musí byť CORS zapnutý, pretože to nie je v predvolenom nastavení povolené. Základný typ žiadosti CORS je jednoduchý typ žiadosti, používa iba smernice ORIGIN a ACCESS-CONTROL-ALLOW-ORIGIN a s touto pomocou môže Nginx udeliť webovému prehliadaču povolenie na prístup k požadovanému prostriedku v závislosti od pôvodu. Či tak alebo onak CORS je celkom užitočný a mal by sa používať opatrne.

Hry Top 5 kariet na zachytávanie hier
Top 5 kariet na zachytávanie hier
Všetci sme videli a milovali streamovanie hier na YouTube. PewDiePie, Jakesepticye a Markiplier sú iba niektorí z najlepších hráčov, ktorí zarobili mi...
Hry Ako vyvíjať hru v systéme Linux
Ako vyvíjať hru v systéme Linux
Pred desiatimi rokmi by len málo používateľov Linuxu predpovedalo, že ich obľúbený operačný systém bude jedného dňa populárnou hernou platformou pre k...
Hry Open source porty komerčných herných strojov
Open source porty komerčných herných strojov
Na hranie starých i niektorých z nedávnych herných titulov je možné využiť bezplatné hry s otvoreným zdrojom a multiplatformové herné enginy. V tomto ...