Nginx

Kā lietot CORS ar Nginx

Kā lietot CORS ar Nginx

Kas ir CORS

CORS, kas pazīstams arī kā savstarpējas izcelsmes resursu koplietošana, ir mūsdienu tīmekļa pārlūkprogrammās izmantota metode, kas kontrolē piekļuvi tīmekļa serverī mitinātiem resursiem. CORS izmanto papildu galvenes, piemēram, izcelsmi, piekļuves kontroles izcelsmi un daudz ko citu, lai noteiktu, vai pieprasītajam resursam ir atļauja nosūtīt pārlūkprogrammai. Galvenais CORS mērķis ir novērst tīmekļa lietojumprogrammā, kas darbojas tīmekļa pārlūkprogrammā, piekļuvi resursiem, kas mitināti citā izcelsmē, ja nav atļaujas. Ko tas nozīmē, ka tīmekļa lietojumprogramma nevar lejupielādēt resursus, piemēram, attēlus, skriptus, jebkāds saturs utt. ja tie netiek mitināti vienā un tajā pašā izcelsmes vietā (parasti visiem jābūt tajā pašā domēnā) kā tīmekļa lietojumprogrammai, ja vien serveris nav konfigurēts atļaut šādu darbību. Izmantojot šo ieviešanu tīmekļa pārlūkprogrammā, lietotāji var aizsargāt savus datus no nesankcionētām personām. Hakeris var slepeni modificēt tīmekļa lapu, atrodoties savienojuma vidū, lai izjauktu lietotāja biznesu vai piekļūtu vērtīgiem datiem. Tomēr ir arī CORS priekšrocības, piemēram, tas ļauj izstrādātājiem ielādēt resursus no citas izcelsmes rentabilitātes vai vienkārši ērtības dēļ. Tādā gadījumā viņiem ir jāpārveido savs tīmekļa serveris, lai atļautu šādus pieprasījumus. Šis raksts parāda, kā to viegli izdarīt Nginx tīmekļa serverī.

Kas izraisa CORS pieprasījumu

Ne visi pieprasījumi izraisa CORS pieprasījumu, jo parasti resursi tiek mitināti tajā pašā izcelsmē kā tīmekļa lietojumprogramma. Ja tas atšķiras, tiek aktivizēts CORS. CORS ir divu veidu pieprasījumi: vienkāršs pieprasījums un CORS iepriekš izlidots pieprasījums.

Vienkāršais pieprasījums darbojas kā parasts pieprasījums, tīmekļa pārlūkprogramma nosūta serverim pieprasījumu lejupielādēt noteiktu resursu, kad lietotājs to ir uzsācis, pēc tam tīmekļa serveris pārbauda pieprasījuma izcelsmi, salīdzina to ar tīmekļa servera noteikumiem, ja tas ir resurss tiek piegādāts. Šis pieprasījuma tips izmanto galvenes OIRIGN un PIEEJAS KONTROLE-ĻOTI-IZCELSME, lai noteiktu, vai resurss ir jāpiegādā. Vienkāršs pieprasījums tiek aktivizēts tikai tad, ja tiek izmantotas tādas pieprasījuma metodes kā GET, HEAD, POST un tiek izmantotas galvenes, piemēram, Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width. Pat tad ne visi satura veidi izraisa vienkāršu pieprasījumu. Šeit tikai veidlapu kodēšanas veidi izraisa vienkāršu pieprasījumu.

Iepriekš izlidotā pieprasījuma veids ir diezgan atšķirīgs, jo pirmajā kārtā nav tiešas piekļuves resursiem. Kad iepriekšminētie nosacījumi tiek kaut kā mainīti, izmantojot citu pieprasījuma galveni vai citu satura tipu, tiek aktivizēts iepriekš izlidots pieprasījums. Pre-flyed pieprasījumos tīmekļa pārlūkprogramma vispirms pārliecinās, vai tā var piekļūt resursam, sazinoties ar tīmekļa pārlūku, pēc tam, kad tīmekļa pārlūkprogramma atbildēja ar atbildi Labi (HTTP 200), pēc tam tā nosūta vēl vienu pieprasījumu resursa lejupielādei. Lai izmantotu pirmo pieprasījumu, tā izmanto HTTP OPTION pieprasījuma metodi, pēc tam resursu lejupielādei izmanto GET, POST līdzīgus pieprasījumu veidus.

Kā konfigurēt Nginx atbalstīt CORS pieprasījumus

Šajā sadaļā ir parādīts, kā konfigurēt nginx tīmekļa serveri, lai atļautu kopīgu izcelsmes resursu koplietošanu. To var izdarīt tikai tad, ja izstrādātājam ir piekļuve tīmekļa serverim, jo ​​tas ietver Nginx konfigurācijas faila modifikāciju.

Izmantojiet šo vienkāršo koda fragmentu, lai atļautu CORS pieprasījumus. Tas ir jākopē noklusējuma nginx failā Ubuntu vai jebkurā citā platformā.

atrašanās vieta \
if ($ request_method = 'IESPĒJAS')
add_header 'Piekļuves kontrole-Atļaut-izcelsme' https: // localhost;
add_header 'Piekļuves kontrole-Atļaut-metodes' POST, OPTIONS ';
add_header 'Piekļuves kontrole-Maksimālais vecums' 1728000;
add_header 'Content-Type' text / plain; charset = utf-8 ';
atgriešanās 204;

if ($ request_method = 'POST')
add_header 'Piekļuves kontrole-Atļaut-izcelsme' https: // localhost;
add_header 'Piekļuves kontrole-Atļaut-metodes' 'POST';

Pamata koda fragments darbojas tāpat kā iepriekš. Tas satur tādas direktīvas kā request_method, add_header, lai identificētu pieprasījuma tipu, un iestatiet pārlūka atbildes galveni attiecīgi lasīšanai. Galvene Access-control-allow-origin definē, kurai izcelsmei resurss ir pieejams, piemēram, ja github mitināta tīmekļa lietojumprogramma vēlas piekļūt myOwnServer mitinātam attēlam.com, tad github vietrādis URL ir jāizmanto kā piekļuves kontroles-allow-origin direktīvas vērtība vietnē myOwnServer.com, tad ikreiz, kad tīmekļa lietojumprogramma, kas mitināta vietnē github, nosūta pieprasījumus myOwnServer.com, lai lejupielādētu attēla failu, visiem šiem pieprasītajiem tiek piešķirta atļauja. Piekļuves kontrole-atļaut-metodes galvene nosaka, kādus pieprasījumu veidus atbalsta tīmekļa lietojumprogramma, kas nosūta pieprasījumus, pēc tam pārējās galvenes ir paredzētas maksimālajam vecumam, lai saglabātu pieprasījumus kešatmiņā, un atbalstītā satura tips.

Kā aprakstīts iepriekš, pēc tam, kad OPTION pieprasījums ir pabeigts, pārlūks nosūta jaunu pieprasījumu lejupielādēt resursus, ja pirmais pieprasījums bija veiksmīgs, tā galvenes tiek iestatītas pirmajā pieprasījuma_metodē, ja iekavās.

Izņemot iepriekš minētās direktīvas, Nginx ir dažas citas svarīgas direktīvas, kuras var izmantot CORS pieprasījumos. Viena no vissvarīgākajām direktīvām ir piekļuves kontrole-atļaut galvenes, ko tā dara, lai pārlūkprogrammai pārbaudītu atbildes galveni ar atļautiem galvenes nosaukumiem. Tīmekļa lietojumprogrammai var būt savas galvenes dažādiem mērķiem, un, ja šādas galvenes ir nākamajos pieprasījumos pēc sākotnējā OPTIONS pieprasījuma, tad Web serverim jāatļauj visām šīm galvenēm pirms koplietot pieprasīto resursu.

Ir svarīgi, lai šis koda fragments būtu pareizajā vietā Nginx noklusējuma failā, jo Nginx izpilda dažādus atrašanās vietas blokus atkarībā no saskaņotā URL, ja šāds atrašanās vietas bloks nesatur šo koda fragmentu, tad tas vispār netiek izpildīts, un tāpēc drošībai ir svarīgi to izmantot visos atrašanās vietas blokos. Daži no svarīgiem atrašanās vietas blokiem ir Attēli, PHP (~ \.php $), CSS utt. bloki.

Kad iepriekšminētais koda fragments ir saglabāts, saglabājiet Nginx failu un atkārtoti ielādējiet Nginx pakalpojumu izmaiņām, lai tās stātos spēkā.

Secinājums

CORS ir pazīstama kā savstarpējas izcelsmes resursu koplietošana, un tā ir metode, kā kontrolēt piekļuvi resursiem. Šie resursi var būt jebkurš fails no attēla uz javascript failu. CORS galvenais mērķis ir pastiprināt tīmekļa lietojumprogrammu drošību, lai novērstu cilvēku uzbrukumu vidū. Tomēr arī CORS var būt priekšrocības. Tādā gadījumā CORS ir jāieslēdz, jo tas nav atļauts pēc noklusējuma. Pamata CORS pieprasījuma tips ir vienkāršs pieprasījuma veids, tajā tiek izmantotas tikai ORIGIN un ACCESS-CONTROL-ALLOW-ORIGIN direktīvas, un ar šo palīdzību Nginx var piešķirt atļauju tīmekļa pārlūkprogrammai piekļūt pieprasītajam resursam atkarībā no izcelsmes. Katrā ziņā CORS ir diezgan noderīgs, un tas jālieto uzmanīgi.

Kā lietot GameConqueror Cheat Engine Linux
Rakstā ir sniegts ceļvedis par GameConqueror apkrāptu dzinēja izmantošanu Linux. Daudzi lietotāji, kas spēlē spēles operētājsistēmā Windows, bieži izm...
Labākie Linux spēļu konsoles emulatori
Šajā rakstā tiks uzskaitīta populārā Linux spēļu konsoles atdarināšanas programmatūra. Emulācija ir programmatūras saderības slānis, kas atdarina spēļ...
Labākie Linux spēļu draiveri 2021. gadā
Linux operētājsistēma ir gājusi tālu no sākotnējā, vienkāršā uz serveriem balstītā izskata. Šī operētājsistēma pēdējos gados ir ārkārtīgi uzlabojusies...