Nginx

Kaip naudoti CORS su Nginx

Kaip naudoti CORS su Nginx

Kas yra CORS

CORS, dar žinomas kaip kryžminės kilmės išteklių dalijimasis, yra šiuolaikinėse interneto naršyklėse naudojama technika, kontroliuojanti prieigą prie žiniatinklio serveryje talpinamų išteklių. CORS naudoja papildomas antraštes, tokias kaip kilmė, prieigos kontrolė-kilmė ir daug daugiau, kad nustatytų, ar prašomas šaltinis turi leidimą būti siunčiamas į naršyklę. Pagrindinis CORS tikslas yra užkirsti kelią žiniatinklio naršyklėje veikiančiai žiniatinklio programai pasiekti kitokio šaltinio talpinamus išteklius, kai nėra leidimo, o tai reiškia, kad žiniatinklio programa negali atsisiųsti išteklių, tokių kaip vaizdai, scenarijai, css bet koks turinys ir kt. kai jie nėra priglobti ta pačia kilme (paprastai visi turėtų būti tame pačiame domene) kaip ir žiniatinklio programa, nebent serveris sukonfigūruotas taip leisti. Turėdami šį diegimą žiniatinklio naršyklėje, vartotojai gali apsaugoti savo duomenis nuo pašalinių asmenų. Įsilaužėlis gali slapta modifikuoti tinklalapį būdamas ryšio viduryje, kad sutrikdytų vartotojo verslą ar gautų prieigą prie vertingų duomenų. Tačiau yra ir CORS privalumų, pvz., Tai leidžia kūrėjams įkelti kitos kilmės išteklius dėl ekonomiškumo ar tiesiog patogumo. Tokiu atveju jie turi modifikuoti savo interneto serverį, kad leistų tokias užklausas. Šis straipsnis parodo, kaip tai padaryti lengvai „Nginx“ interneto serveryje.

Kas sukelia CORS užklausas

Ne visos užklausos suaktyvina CORS užklausą, nes paprastai ištekliai talpinami ta pačia kilme kaip ir žiniatinklio programa. Jei jis skiriasi, tada suveikia CORS. CORS turi dviejų tipų užklausas: paprastas prašymas ir CORS iš anksto pareikštas prašymas.

Paprasta užklausa veikia kaip įprasta užklausa, žiniatinklio naršyklė siunčia serveriui užklausą atsisiųsti tam tikrą šaltinį, kai vartotojas jį inicijavo, tada žiniatinklio serveris patikrina užklausos kilmę, palygina ją su žiniatinklio serveryje esančiomis taisyklėmis, jei tai išteklius tiekiamas. Šis užklausos tipas naudoja OIRIGN ir ACCESS-CONTROL-ALLOW-ORIGIN antraštes, kad nustatytų, ar šaltinis turėtų būti tiekiamas, ar ne. Paprasta užklausa suaktyvinama tik tuo atveju, jei naudojami užklausos metodai, pvz., GET, HEAD, POST, ir naudojami antraštės, pvz., Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width. Net tada ne visi turinio tipai sukelia paprastą užklausą. Čia tik formos kodavimo tipai sukelia paprastą užklausą.

Išankstinio skrydžio užklausos tipas yra gana kitoks, nes pirmame etape nėra tiesioginės prieigos prie išteklių. Kai minėtos sąlygos kažkaip pakeičiamos, naudojant kitą užklausos antraštę arba kitokio turinio tipą, suaktyvinama užklausa „Prieš skrydį“. Iš anksto skrendant užklausoms, žiniatinklio naršyklė pirmiausia įsitikina, kad ji gali pasiekti išteklių naudodama ryšį su interneto naršykle, tada, kai žiniatinklio naršyklė atsakė gerai (HTTP 200) atsakymu, tada ji siunčia kitą užklausą atsisiųsti šaltinį. Pirmajai užklausai inicijuoti naudojamas HTTP OPTION užklausos metodas, tada ištekliams atsisiųsti naudojamas GET, POST tipo užklausų tipas.

Kaip sukonfigūruoti „Nginx“ palaikyti CORS užklausas

Šiame skyriuje parodyta, kaip sukonfigūruoti „nginx“ žiniatinklio serverį, kad būtų galima dalytis šaltinių šaltiniais. Tai galima padaryti tik tuo atveju, jei kūrėjas turi prieigą prie tinklo serverio, nes tai reiškia „Nginx“ konfigūracijos failo modifikavimą.

Norėdami leisti CORS užklausas, naudokite šį paprastą kodo fragmentą. Tai turi būti nukopijuota į numatytąjį „nginx“ paslaugos failą „Ubuntu“ ar bet kurioje kitoje platformoje.

vieta \
if ($ request_method = 'PASIRINKIMAI')
add_header 'Prieigos kontrolė-Leisti-kilmė' 'https: // localhost;
add_header 'Prieigos kontrolė-Leisti-metodai "POST, OPTIONS";
add_header „Prieigos kontrolė-„ Max-Age ““ 1728000;
add_header 'Content-Type' text / plain; charset = utf-8 ';
grįžti 204;

jei ($ request_method = 'POST')
add_header 'Access-Control-Allow-Origin "https: // localhost;
add_header 'Prieigos kontrolė-Leisti-metodai' 'POST';

Pagrindinis kodo fragmentas eina kaip pirmiau. Jame yra tokios direktyvos kaip request_method, add_header, kad būtų galima nustatyti užklausos tipą, ir nustatykite naršyklės atsakymo antraštę, kad ji būtų atitinkamai skaitoma. „Access-control-allow-origin“ antraštė apibrėžia, prie kurios šaltinio turi prieigą, pavyzdžiui, jei „github“ priglobta žiniatinklio programa nori pasiekti „myOwnServer“ priglobtą vaizdą.„com“, tada „github“ URL turėtų būti naudojamas kaip „Access-control-allow-origin“ direktyvos reikšmė „myOwnServer“.lt, tada, kai žiniatinklio programa, priglobta „github“, siunčia užklausas „myOwnServer“.lt atsisiųsti vaizdo failą, visiems šiems prašomiems asmenims suteikiamas leidimas. „Access-control-allow-method“ antraštė apibrėžia, kokius užklausų tipus palaiko užklausas siunčianti žiniatinklio programa, tada likusios antraštės turi maksimalų amžių, kad užklausos būtų talpinamos talpykloje, ir palaikomo turinio tipas.

Kaip aprašyta aukščiau, baigus OPTION užklausą, naršyklė siunčia kitą užklausą atsisiųsti išteklius, jei pirmoji užklausa buvo sėkminga, jos antraštės nustatomos pirmajame request_method, jei skliausteliuose.

Išskyrus minėtas direktyvas, „Nginx“ yra keletas kitų svarbių direktyvų, kurias galima naudoti CORS užklausose. Viena iš svarbiausių direktyvų yra prieigos kontrolė-leisti antraštes, tai yra nustatyti atsakymo antraštę su leidžiamais antraštių pavadinimais, kad naršyklė galėtų patikrinti. Žiniatinklio programa gali turėti savo antraštes įvairiems tikslams, ir jei tokios antraštės pateikiamos vėlesnėse užklausose po pradinės OPTIONS užklausos, tada žiniatinklio serveris turėtų leisti visoms šioms antraštėms prieš bendrinant prašomą šaltinį.

Svarbu, kad šis kodo fragmentas būtų tinkamoje vietoje numatytame „Nginx“ faile, nes „Nginx“ vykdo skirtingus vietos blokus, priklausomai nuo suderinto URL, jei tokio vietos bloke nėra šio kodo fragmento, jis iš viso nevykdomas, todėl svarbu tai naudoti visuose vietos blokuose, kad būtų saugu. Kai kurie svarbūs vietos blokai yra Vaizdai, PHP (~ \.php $), CSS ir kt. blokai.

Išsaugoję minėtą kodo fragmentą, išsaugokite „Nginx“ failą ir iš naujo įkelkite „Nginx“ paslaugą į pakeitimus, kad jie įsigaliotų.

Išvada

CORS yra žinomas kaip kryžminių šaltinių dalijimasis ir yra prieigos prie išteklių kontrolės technika. Šie šaltiniai gali būti bet kuris failas nuo vaizdo iki „Javascript“ failo. Pagrindinis CORS tikslas yra sugriežtinti žiniatinklio programų saugumą, siekiant užkirsti kelią žmonėms, esantiems viduryje. Tačiau ir CORS gali turėti naudos. Tokiu atveju CORS turi būti įjungtas, nes tai nėra leidžiama pagal nutylėjimą. Pagrindinis CORS užklausos tipas yra paprastas užklausos tipas, jame naudojamos tik „ORIGIN“ ir „ACCESS-CONTROL-ALLOW-ORIGIN“ direktyvos, ir su tuo „Nginx“ gali suteikti interneto naršyklei leidimą pasiekti prašomą šaltinį, priklausomai nuo kilmės. Bet kuriuo atveju CORS yra gana naudingas ir turėtų būti naudojamas atsargiai.

„OpenTTD“ pamoka
„OpenTTD“ yra vienas iš populiariausių verslo modeliavimo žaidimų. Šiame žaidime turite sukurti nuostabų transporto verslą. Tačiau pradėsite nuo mažda...
„SuperTuxKart“, skirta „Linux“
„SuperTuxKart“ yra puikus pavadinimas, sukurtas nemokamai suteikti „Mario Kart“ patirtį jūsų „Linux“ sistemoje. Tai gana sudėtinga ir smagu žaisti, yr...
„Battle for Wesnoth“ pamoka
„Battle for Wesnoth“ yra vienas populiariausių atvirojo kodo strateginių žaidimų, kurį šiuo metu galite žaisti. Šis žaidimas ne tik buvo kuriamas laba...