Nginx

Kako uporabljati CORS z Nginxom

Kako uporabljati CORS z Nginxom

Kaj je CORS

CORS, znan tudi kot skupna raba virov, je tehnika, ki se uporablja v sodobnih spletnih brskalnikih in nadzoruje dostop do virov, ki jih gosti spletni strežnik. CORS uporablja dodatne glave, kot so izvor, dostop-nadzor-izvor in še veliko več, da ugotovi, ali ima zahtevani vir dovoljenje za pošiljanje v brskalnik. Primarni namen CORS je preprečiti spletni aplikaciji, ki se izvaja v spletnem brskalniku, dostop do virov, ki jih gosti drug izvor, kadar ni dovoljenja, kar pomeni, da spletna aplikacija ne more prenesti virov, kot so slike, skripti, css, kot so kakršna koli vsebina itd. kadar niso gosti isti izvor (običajno bi morali biti vsi v isti domeni) kot spletna aplikacija, razen če je strežnik konfiguriran tako, da omogoča to vedenje. S to izvedbo v spletnem brskalniku lahko uporabniki zaščitijo svoje podatke pred nepooblaščenimi stranmi. Heker lahko na skrivaj spremeni spletno stran, medtem ko je sredi povezave, da moti poslovanje uporabnika ali pridobi dostop do dragocenih podatkov. Vendar pa obstajajo tudi prednosti CORS-a, na primer razvijalcem omogoča nalaganje virov iz drugega izvora zaradi stroškovne učinkovitosti ali preprosto udobja. V tem primeru morajo spremeniti svoj spletni strežnik, da dovolijo take zahteve. Ta članek prikazuje, kako to enostavno narediti na spletnem strežniku Nginx.

Kaj sproži zahtevo CORS

Vse zahteve ne sprožijo zahteve CORS, saj so običajno gostitelji v istem izvoru kot spletna aplikacija. Če je drugače, se sproži CORS. CORS ima dve vrsti zahtev, preprosto zahtevo in predhodno osvetljeno zahtevo CORS.

Simple Request deluje kot običajna zahteva, spletni brskalnik pošlje zahtevo strežniku za prenos določenega vira, ko ga je uporabnik sprožil, nato spletni strežnik preveri izvor zahteve in jo primerja s pravili v spletnem strežniku, če je vir, je na voljo. Ta vrsta zahteve uporablja glave OIRIGN in ACCESS-CONTROL-ALLOW-ORIGIN, da določi, ali je treba vir navesti ali ne. Preprosta zahteva se sproži samo, če se uporabljajo metode zahtev, kot so GET, HEAD, POST in se uporabljajo glave, kot so Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width. Tudi takrat vse vrste vsebine ne sprožijo preproste zahteve. Tukaj samo vrste kodiranja obrazcev sprožijo preprosto zahtevo.

Vnaprej označena vrsta zahteve je precej drugačna, saj v prvem krogu ni neposrednega dostopa do virov. Ko se zgoraj omenjeni pogoji nekako spremenijo, bodisi z uporabo druge glave zahteve ali z drugačno vrsto vsebine, se sproži predhodno osvetljena zahteva. V predhodno preverjenih zahtevah spletni brskalnik najprej poskrbi, da lahko dostopa do vira, tako da komunicira s spletnim brskalnikom, nato pa, ko spletni brskalnik odgovori z v redu (HTTP 200), nato pošlje novo zahtevo za prenos vira. Za sprožitev prve zahteve uporablja metodo zahteve HTTP OPTION, nato pa za prenos virov uporablja vrste zahtev GET, POST.

Kako nastaviti Nginx za podporo zahtevam CORS

Ta razdelek prikazuje, kako konfigurirati spletni strežnik nginx, da omogoča skupno rabo virov. To je mogoče storiti le, če ima razvijalec dostop do spletnega strežnika, saj gre za spreminjanje konfiguracijske datoteke Nginxa.

Za omogočanje zahtev CORS uporabite naslednji preprost delček kode. To je treba kopirati v privzeto datoteko storitve nginx v Ubuntuju ali kateri koli drugi platformi.

lokacija \
če ($ request_method = 'OPTIONS')
add_header 'Access-Control-Allow-Origin' 'https: // localhost;
add_header 'Access-Control-Allow-Methods "OBJAVI, MOŽNOSTI";
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type "text / plain; charset = utf-8';
vrnitev 204;

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

Osnovni delček kode je opisan zgoraj. Vsebuje direktive, kot so request_method, add_header za identifikacijo vrste zahteve in nastavi glavo odziva za brskalnik. Glava Access-control-allow-origin določa, do katerega izvora ima dostop vir, na primer, če hoče spletna aplikacija, ki gostuje v githubu, dostopati do slike, ki gostuje v myOwnServer.com, potem je treba URL vrednosti github uporabiti kot vrednost direktive Access-control-allow-origin v myOwnServer.com, nato pa kadar koli spletna aplikacija, ki gostuje v githubu, pošlje zahteve myOwnServer.com za prenos slikovne datoteke, imajo vsi zahtevani dovoljenja. Glava Access-control-allow-method določa, katere vrste zahtev podpira spletna aplikacija, ki pošilja zahteve, nato pa so ostale glave največje dovoljene za predpomnjenje zahtev in podprta vrsta vsebine.

Kot je opisano zgoraj, po zaključku zahteve OPTION brskalnik pošlje novo zahtevo za prenos virov, če je bila prva zahteva uspešna, glave pa so nastavljene v prvi request_method, če so oklepaji.

Razen prej omenjenih direktiv je v Nginxu še nekaj pomembnih direktiv, ki jih je mogoče uporabiti v zahtevah CORS. Ena najpomembnejših direktiv je head-access-control-allow-headers, zato nastavi glavo odziva z dovoljenimi imeni glav za preverjanje brskalnika. Spletna aplikacija ima lahko lastne glave za različne namene in če so takšne glave prisotne v naslednjih zahtevah po začetni zahtevi OPTIONS, potem mora spletni strežnik dovoliti vse te glave, preden se zahtevani vir deli z drugimi.

Pomembno je, da je ta delček kode na pravem mestu v privzeti datoteki Nginx, ker Nginx izvaja različne bloke lokacije, odvisno od ustreznega URL-ja. Če tak blok lokacije ne vsebuje tega delčka kode, potem sploh ni izveden, zato je pomembno, da to uporabite v vseh lokacijskih blokih za varno stran. Nekateri pomembni lokacijski bloki so Images, PHP (~ \.php $), CSS itd.

Ko je omenjeni delček kode shranjen, shranite datoteko Nginx in znova naložite storitev Nginx, da bodo spremembe začele veljati.

Zaključek

CORS je znan kot skupna izmenjava virov in je tehnika za nadzor dostopa do virov. Ti viri so lahko katera koli datoteka od slike do datoteke javascript. Primarni namen CORS je poostriti varnost spletnih aplikacij, da bi preprečili napade človeka v sredini. Vendar ima lahko tudi CORS koristi. V tem primeru mora biti CORS vklopljen, saj privzeto ni dovoljen. Osnovna vrsta zahteve CORS je preprosta vrsta zahteve, uporablja le direktivi ORIGIN in ACCESS-CONTROL-ALLOW-ORIGIN in s to pomočjo lahko Nginx spletnemu brskalniku dovoli dostop do zahtevanega vira, odvisno od izvora. Kakorkoli že, CORS je zelo koristen in ga je treba uporabljati previdno.

Najboljše laboratorijske igre Oculus App
Če ste lastnik slušalk Oculus, morate biti seznanjeni s stranskim nalaganjem. Sideloading je postopek namestitve vsebine, ki ni shranjena v slušalke. ...
10 najboljših iger za igranje v Ubuntuju
Platforma Windows je bila ena izmed prevladujočih platform za igre na srečo zaradi velikega odstotka iger, ki se danes razvijajo za naravno podporo si...
5 najboljših arkadnih iger za Linux
Dandanes so računalniki resni stroji, ki se uporabljajo za igre na srečo. Če ne boste mogli dobiti novega visokega rezultata, boste vedeli, kaj mislim...