Uvod CORS za začetnike

Se sprašujete, kaj je CORS (navzkrižno poreklo virov)?


V vohunskih filmih imajo varnostni operativci kodiran način prenašanja informacij med seboj. Ker večinoma prenašajo informacije, ki jih lahko uporabijo proti njim, če padejo v roke njihovih sovražnikov, morajo poskrbeti, da bodo tisti, ki informacije prejemajo, zaupanja vredni. Enako velja za tiste, ki omenjene podatke pošiljajo. Ko se pošiljatelju in prejemniku zaupata, sta lahko verodostojnost in varnost informacij.

https://pt.slideshare.net/atirekgupta/selenium-workshop-34820044

Ponovitev tega scenarija se zgodi v komunikaciji med brskalniki in spletnimi strežniki in se imenuje politika istega izvora.

Po MDN:

The politika istega izvora je ključni varnostni mehanizem, ki omejuje, kako lahko dokument ali skripta, naložena iz enega izvora, vzajemno deluje z virom iz drugega izvora. Pomaga izolirati potencialno zlonamerne dokumente in zmanjša morebitne prenašalce napadov.

Kaj je CORS?

V primeru resničnega življenja, ko varnostni operaterji dajo pravilo, da se komunikacija med operativci lahko izvaja samo kot varnostno sredstvo, je to podobno kot politika istega izvora. Vendar lahko obstajajo primeri, ko bodo morali vzajemno delovati z zunanjim svetom. Ali pa z operativci drugih varnostnih oblačil lahko za to izvedejo še en varnostni ukrep preveriti tisti operativci. To preverjanje lahko poteka na različne načine, odvisno od udeleženih operativcev. V primeru komunikacije na internetu, CORS je mehanizem, ki brskalnikom omogoča dostop do virov, do katerih prvotno ne bodo mogli, ker je vir drugačnega izvora.

Cross-Origin Resource Sharing (CORS) je mehanizem, ki uporablja dodatne glave HTTP, da brskalnikom sporoči, naj spletni aplikaciji, ki deluje z enim izvorom, dostop do izbranih virov iz drugega izvora.

O izvoru sem govoril že večkrat in verjetno se sprašujete, kaj to pomeni. Izvor je določen s protokolom, domeno in pristaniščem URL-ja. Ko imate svoj API pri izvoru, kot je https://api.geekflare.com:3001, in vaš prednji naslov na https://geekflare.com, naj bi bil izvor različen. V tej situaciji potrebujete CORS, da lahko dostopate do virov na obeh koncih.

Ko so zahteve posredovane strežniku, brskalniki (odjemalec) in strežniki pošiljajo zahteve in odzive, so vključene glave HTTP. Med temi glavami so tudi dodatna glava, ki preprečujejo, da bi brskalnik preprečil komunikacijo.

Zakaj bo brskalnik blokiral komunikacijo?

Varnostne funkcije brskalnika. To bo storilo, če zahteva prihaja iz izvora, ki ni drugačen od odjemalca. Dodatne glave, ki so vključene kot rezultat CORS, sporočajo stranki, da lahko uporabi odgovor, ki ga je prejel.

Glave CORS

Eden od varnih naslovov, ki je lahko odziv ali glava zahteve.

Glave odzivov

To so glave, ki jih strežnik v odgovoru pošlje nazaj.

  • Access-Control-Allow-Origin:: Uporablja se za določitev izvora, ki je dovoljen za dostop do vira na strežniku. Določite lahko, da so dovoljene samo zahteve določenega izvora – Access-Control-Allow-Origin: https://geekflare.com ali izvor ni pomemben – Access-Control-Allow-Origin: *.
  • Head-Control-Expose-Headers:: Kot že ime pove, so tukaj navedene glave, do katerih ima brskalnik dostop.
  • Access-Control-Max-Age:: To kaže na trajanje, v katerem se lahko predpomnilnik odziva pred vletom.
  • Access-Control-Allow-Credentials:: To pomeni, da lahko brskalnik uporabi odgovor, ko je bila prvotna zahteva opravljena z poverilnico.
  • Načini nadzora nadzorovanja dostopa: dovolijo načine, ki so dovoljeni pri poskusu dostopa do vira.
  • Nadzor dostopa-nadzor-dovoli:: to pomeni, da se glave HTTP lahko uporabijo v zahtevi.

Tu je primer, kako bo izgledal odziv

HTTP / 1.1 204 Brez vsebine
Nadzor dostopa-dovoli izvor: *
Načini nadzora-dovoljenja dostopa: GET, HEAD, PUT, PATCH, POST, DELETE
Vary: Glave dostopa do nadzora-zahteve
Access-Control-Allow-Headers: Vrsta vsebine, Sprejmi
Dolžina vsebine: 0
Datum: sobota, 16. november 2019 11:41:08 GMT + 1
Povezava: ostanite živi

Zahtevaj glave

Tu so naslovi, ki jih mora vsebovati zahteva stranke, da se uporabi mehanizem CORS.

  • Izvor:: to označuje izvor zahteve stranke. Ko delate s prednjim in povratnim programom, kot je bilo navedeno prej, to bo gostitelj vaše aplikacije za frontend.
  • Način nadzora-dostop-kontrola dostopa:: ta se uporablja v zahtevi pred vletom, da nakaže način HTTP, ki bo uporabljen za vložitev zahteve.
  • Glave zahteve za nadzor-dostop-zahteve:: to se uporablja v zahtevi pred vletom, da se navedejo glave HTTP, ki bodo uporabljene za vložitev zahteve.

Tu je primer, kako bo izgledala zahteva

curl -i -X ​​MOŽNOSTI localhost: 3001 / api \
-H „Metoda nadzora-dostopa do dostopa: GET“ \
-H ‘Glave dostopa do nadzora-zahteve: Vrsta vsebine, Sprejmi’ \
-H ‘Izvor: http: // localhost: 3000’

Zahteve pred vletom

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

Po omembi prošenj za predhodno letenje tu in tam, kaj bi to sploh lahko pomenilo?

Zahteve pred vletom se zgodijo, ko mora stranka poslati glavno zahtevo pred glavno zahtevo. Zahteva pred vletom je več kot sonda da ugotovi, ali strežnik podpira glavno zahtevo, ki naj bi bila podana. Ko dobimo pozitivno potrditev, se pošlje glavna zahteva.

Kadar zahteva ni zahteva po predhodnem letu, se imenuje a preprosta zahteva.

Izvajanje CORS

Predmeti boste večinoma želeli nastaviti na začetku aplikacije. Izvedba je odvisna od okvira, ki ga uporabljate. V tej vadnici bomo pogledali, kako to storiti v NodeJS in Rails.

Tirnice

Priporočam, da uporabite stojala dragulj. To boste morali dodati v datoteko config / application.rb.

config.middleware.insert_before 0, Rack :: Cors
dovolite
porekla ‘*’
vir ‘*’,
glave:: poljubno,
izpostavi:% i (uid odjemalec tipa ID-ja za dostop do žetona dostopa),
metode:% i (glava pošlji objavo možnosti za brisanje popravka),
poverilnice: res
konec
konec

NodeJS

V Node.js bo to videti nekako tako.

app.all (‘*’, (req, res, next) => {
res.header (‘Access-Control-Allow-Origin’, ‘*’);
res.header („metode dostopa do nadzora-dovoljenja“, „PUT, GET, POST, DELETE, PATCH, OPTIONS HEAD“);
res.header (‘Access-Control-Allow-Headers’, ‘*’);
res.header (‘Access-Control-Allow-Credentials’, res);
Naslednji();
});

V delček kode nastavljamo izvor, metode, glave in poverilnice, ki bi jim morali omogočiti dostop do virov, ki so na voljo na našem strežniku. Lahko tudi odjavite Sqreen ki zagotavlja modul varnostnih glavo, ki ga je treba integrirati z aplikacijami Ruby, PHP, Python, Java, Go, Node.JS. In za izvajanje v Apache ali Nginx glejte ta vodnik.

Zaključek

CORS sprosti pravilnik, tako da lahko vaš brskalnik dostopa do virov, ki jih želite. Razumevanje, kaj je to, zakaj je to ključno in kako ga nastaviti, bo pomagalo ugotoviti težave, s katerimi se lahko srečujete med izdelavo spletnih aplikacij.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map