Uvod CORS-a za početnike

Pitate se što je CORS (cross-Origin Resource Sharing)?


U špijunskim filmovima, sigurnosni operativci imaju kodiran način prijenosa informacija među sobom. Budući da uglavnom prenose informacije koje se protiv njih mogu upotrijebiti ako padnu u ruke njihovih neprijatelja, moraju se pobrinuti da oni koji dobivaju te informacije budu pouzdane stranke. Isto se odnosi na one koji šalju navedene podatke. Kada se pošiljatelju i primatelju vjeruje, može se jamčiti vjerodostojnost i sigurnost informacija.

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

Replika ovog scenarija događa se u komunikaciji između preglednika i web poslužitelja, a naziva se politika istog podrijetla.

Prema MDN-u:

 politika istog podrijetla je kritični sigurnosni mehanizam koji ograničava način na koji dokument ili skripta učitani iz jednog izvora mogu komunicirati s resursom drugog izvora. Pomaže u izoliranju potencijalno zlonamjernih dokumenata, smanjujući moguće vektore napada.

Što je CORS?

U stvarnom slučaju, kada operateri osiguranja daju pravilo da se komunikacija između operativaca može odvijati samo kao sredstvo sigurnosti, to je slično politici istog podrijetla. Pa ipak, mogu postojati slučajevi kad će trebati komunicirati s vanjskim svijetom. Ili s operativcima drugih odjela za sigurnost, da bi se to dogodilo, oni mogu provesti drugu sigurnosnu mjeru provjeriti oni operativci. Ova provjera može doći na različite načine, ovisno o operativcima koji su uključeni. U slučaju komunikacije na Internetu, CORS je li mehanizam koji preglednicima omogućuje pristup izvorima do kojih izvorno neće moći jer je resurs različitog porijekla.

Cross-Origin Resource Sharing (CORS) je mehanizam koji koristi dodatna HTTP zaglavlja kako bi navela preglednike da web-aplikaciji pokreću u jednom podrijetlu, pristup odabranim resursima iz drugog podrijetla..

Pričao sam o podrijetlu više puta, a vjerojatno se pitate što to znači. Ishodište je definirano protokolom, domenom i portom URL-a. Kad imate svoj API podrijetla, kao što je https://api.geekflare.com:3001, i vaš prednji kraj na https://geekflare.com, kaže se da su podrijetli različiti. U ovoj situaciji, trebat će vam CORS kako biste mogli pristupiti resursima na oba kraja.

Kad se zahtjevi postave prema poslužitelju, preglednici (klijent) i poslužitelji šalju zahtjeve i odgovore, uključuju se HTTP zaglavlja. Među tim se zaglavlja nalaze dodatna zaglavlja koja sprečavaju preglednik da blokira komunikaciju.

Zašto će preglednik blokirati komunikaciju?

Sigurnosne značajke preglednika. Učinit će to ako zahtjev dolazi od podrijetla različitog od klijenta. Dodatna zaglavlja uključena kao rezultat CORS-a su način da se klijentu kaže da može iskoristiti odgovor koji je primio..

Zaglavlja CORS-a

Jedno od sigurnih zaglavlja koje može biti odgovor ili zaglavlje zahtjeva.

Zaglavlja odgovora

Ovo su zaglavlja koja poslužitelj šalje u svom odgovoru.

  • Access-Control-Allow-Origin:: Koristi se za određivanje podrijetla kojem je dopušten pristup resursu na poslužitelju. Moguće je navesti da su dopušteni samo zahtjevi određenog podrijetla – Pristup-kontrola-dopusti-porijeklo: https://geekflare.com ili da podrijetlo nije važno – pristup-kontrola-dopusti-izvor: *.
  • Access-Control-Expose-Headers:: Kao što naziv govori, ovdje su navedena zaglavlja kojima preglednik ima pristup.
  • Access-Control-Max-Age:: To ukazuje na trajanje za koje se može odgovoriti u predmemoriranje odgovora na zahtjev za let.
  • Access-Control-Allow-Credentials:: To ukazuje da preglednik može iskoristiti odgovor kada je početni zahtjev izvršen s vjerodajnicom.
  • Metode pristupa-kontrole i dopuštenja:: Ovo pokazuje metodu (a) koja je dopuštena prilikom pokušaja pristupa resursu.
  • Access-Control-Allow-Headers:: To znači da se HTTP zaglavlja mogu koristiti u zahtjevu.

Evo primjera kako će izgledati odgovor

HTTP / 1.1 204 Nema sadržaja
Kontrola pristupa-Dozvoljavanje porijekla: *
Metode kontrole i dopuštenja pristupa: GET, HEAD, PUT, PATCH, POST, DELETE
Različito: Zaglavi-Pristupni-Zahtjevi-zaglavlja
Access-Control-Allow-Headers: Vrsta sadržaja, Prihvati
Dužina sadržaja: 0
Datum: Sub, 16. studenog 2019. 11:41:08 GMT + 1
Veza: ostanite živi

Zatraži zaglavlja

Evo zaglavlja koje bi zahtjev klijenta trebao sadržavati da bi se koristio CORS mehanizam.

  • Porijeklo:: ovo ukazuje na podrijetlo zahtjeva klijenta. Kada radite s sučeljem i podupiračem, kao što je prethodno navedeno, ovo će biti domaćin vaše aplikacije za sučelje.
  • Metoda kontrole i pristupa pristupa:: Koristi se u zahtjevu za let prije ukazivanja na HTTP metodu koja će se koristiti za postavljanje zahtjeva.
  • Zaglavlja zahtjeva za kontrolu pristupa:: Koristi se u zahtjevu za let prije ukazivanja na HTTP zaglavlja koja će se koristiti za postavljanje zahtjeva.

Evo primjera kako će izgledati zahtjev

curl -i -X ​​OPTIONS localhost: 3001 / api \
-H ‘Metoda kontrole zahtjeva za pristupom: GET’ \
-H ‘Zaglavi-Zahtjevi za kontrolu pristupa: Vrsta sadržaja, Prihvati’ \
-H ‘Podrijetlo: http: // localhost: 3000’

Pred-zahtjevi za let

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

Nakon što je ovdje i tamo spomenuo zahtjeve za letom, što bi to moglo značiti?

Zahtjevi za prije leta se događaju kada klijent mora poslati zahtjev za let prije glavnog zahtjeva. Zahtjev za predbilježbu je više od sonda kako bi se utvrdilo podržava li poslužitelj glavni zahtjev koji će se podnijeti. Kad se dobije pozitivna potvrda, šalje se glavni zahtjev.

Ako zahtjev nije zahtjev za let, on se zove a jednostavan zahtjev.

Primjena CORS-a

Većinu ćete stvari htjeti postaviti na početku aplikacije. Provedba ovisi o okviru koji koristite. U ovom ćemo udžbeniku pogledati kako to učiniti u NodeJS i tračnicama.

šine

Preporučujem vam da koristite ovaj rack-kora dragulj. Tada ćete to morati dodati u svoju config / application.rb datoteku.

config.middleware.insert_before 0, Rack :: Cors
dopustiti učiniti
podrijetlo ‘*’
resurs ‘*’,
zaglavlja:: bilo koji,
izlagati:% i (uid klijent tipa tokena pristupnog tokena),
metode:% i (preuzmi post put zakrpu za brisanje glave opcija),
vjerodajnice: istinito
kraj
kraj

NodeJS

U Node.js to će izgledati ovako.

app.all (‘*’, (req, res, next) => {
res.header (‘Access-Control-Allow-Origin’, ‘*’);
res.header (“Metode pristupa-kontrole-dopuštenja”, “PUT, GET, POST, DELETE, PATCH, OPTIONS HEAD”);
res.header (‘Access-Control-Allow-Headers’, ‘*’);
res.header (‘Pristupanje kontroli-dopuštajući vjerodajnice’, istina);
Sljedeći();
});

U isječak koda postavljamo podrijetlo, metode, zaglavlja i vjerodajnice kojima bi trebalo omogućiti pristup resursima dostupnim na našem poslužitelju. Također možete platiti blagajnu Sqreen koji pruža modul sigurnosnih zaglava koji se integrira u Ruby, PHP, Python, Java, Go, Node.JS aplikacije. A za implementaciju u Apache ili Nginx pogledajte ovaj vodič.

Zaključak

CORS ublažava pravila tako da vaš preglednik može pristupiti resursima koje želite. Shvaćanje o čemu se radi, zašto je to bitno i kako to postaviti, pomoći će u pronalaženju problema s kojima biste mogli biti suočeni prilikom izrade web aplikacija.

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