CORS įvadas pradedantiesiems

Įdomu, kas yra CORS (įvairių šaltinių bendrinimas)?


Šnipų filmuose apsaugos darbuotojai turi užkoduotą informacijos perdavimo būdą. Kadangi jie dažniausiai perduoda informaciją, kuri gali būti panaudota prieš juos, jei ji patenka į jų priešų rankas, jie turi įsitikinti, kad tie, kurie gauna informaciją, yra patikimos šalys. Tas pats pasakytina apie tuos, kurie siunčia minėtą informaciją. Kai siuntėju ir gavėju pasitikima, gali būti užtikrintas informacijos patikimumas ir saugumas.

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

Šio scenarijaus kopija įvyksta palaikant ryšį tarp naršyklių ir interneto serverių, ir ji vadinama tos pačios kilmės politika.

Pagal MDN:

 tos pačios kilmės politika yra kritinis saugumo mechanizmas, kuris riboja, kaip dokumentas ar scenarijus, įkeltas iš vienos kilmės vietos, gali sąveikauti su kitos kilmės šaltiniu. Tai padeda atskirti galimai kenksmingus dokumentus, sumažinant galimus atakos vektorius.

Kas yra CORS?

Realiame gyvenime, kai apsaugos darbuotojai pateikia taisyklę, kad bendravimas turi vykti tik tarp jų darbuotojų kaip saugumo priemonė, tai yra panašu į tos pačios kilmės politiką. Vis dėlto gali būti atvejų, kai jiems reikės bendrauti su išoriniu pasauliu. Arba naudodamiesi kitų saugumo priemonių komplektacijos darbuotojais, kad tai įvyktų, jie gali įgyvendinti kitą saugumo priemonę patikrinkite tie operatyvininkai. Šis patikrinimas gali vykti skirtingais būdais, priklausomai nuo dalyvaujančių darbuotojų. Bendravimo internete atveju, KORAI yra mechanizmas, leidžiantis naršyklėms naudotis prieiga prie išteklių, kurių jie iš pradžių negalės, nes šaltiniai yra skirtingos kilmės.

Kryžminės kilmės šaltinių bendrinimas (CORS) yra mechanizmas, kuris naudoja papildomas HTTP antraštes, kad naršyklėms nurodytų, kad žiniatinklio programa veiktų vienoje vietoje, turėtų prieigą prie pasirinktų šaltinių iš kitos kilmės vietos.

Aš ne kartą kalbėjau apie kilmę ir tikriausiai jums įdomu, ką tai reiškia. Kilmę apibrėžia URL protokolas, domenas ir prievadas. Kai turite savo API kilmę, pvz., Https://api.geekflare.com:3001, ir savo priekinę svetainę https://geekflare.com, sakoma, kad kilmė yra skirtinga. Šioje situacijoje jums reikės CORS, kad galėtumėte pasiekti išteklius iš abiejų pusių.

Kai serveriui pateikiamos užklausos, naršyklės (klientas) ir serveriai siunčia užklausas ir atsakymus, įtraukiamos HTTP antraštės. Tarp šių antraščių yra pridėtos papildomos antraštės, kurios neleidžia naršyklei blokuoti ryšio.

Kodėl naršyklė užblokuos ryšį??

Jo naršyklės saugos funkcijos. Tai padarys, jei užklausa kilusi iš kliento kilmės. Papildomos antraštės, įtrauktos dėl CORS, yra būdas pasakyti klientui, kad jis gali naudoti gautą atsakymą.

CORS antraštės

Viena iš saugių antraščių, kurios gali būti atsakymo arba užklausos antraštės.

Atsakymo antraštės

Tai yra antraštės, kurias serveris siunčia atgal atsakydamas.

  • Prieigos valdymas-leidimas-kilmė: Tai naudojama norint nurodyti kilmę, kuriai leidžiama prieiti prie serverio išteklių. Galima nurodyti, kad leidžiamos tik konkrečios kilmės užklausos – „Access-Control-Allow-Origin“: https://geekflare.com, arba kad kilmė neturi reikšmės – „Access-Control-Allow-Origin“: *.
  • Prieigos valdymas, egzempliorių antraštės: Kaip rodo pavadinimas, čia pateikiamos antraštės, kurias turi prieiga prie naršyklės.
  • Prieigos valdymas – maksimalus amžius:: Tai rodo trukmę, kurią galima išsaugoti talpyklą prieš pateikiant prašymą.
  • Prieigos valdymas – leidimas – kredencialai:: Tai rodo, kad naršyklė gali naudoti atsakymą, kai pradinė užklausa buvo pateikta su kredencialu.
  • Prieigos kontrolės, leidimo ir naudojimo metodai:: Tai nurodo metodą (-us), kuris (-ie) buvo leidžiamas bandant pasiekti išteklius.
  • Prieigos valdymas, leidimas, antraštės:: Tai rodo, kad HTTP antraštes galima naudoti užklausoje.

Štai pavyzdys, kaip atrodys atsakymas

HTTP / 1.1 204 Nėra turinio
Prieiga – valdymas – leidimas – kilmė: *
Prieigos kontrolės ir leidimo metodai: GET, HEAD, PUT, PATCH, POST, DELETE
Variantas: Prieigos kontrolė-užklausa-antraštės
Prieigos valdymas-leidimas-antraštės: turinio tipas, sutikti
Turinio ilgis: 0
Data: 2019 m. Lapkričio 16 d., Šeštadienis 11:41:08 GMT + 1
Ryšys: išlikite gyvas

Užklausa antraštes

Čia yra antraštės, kurias turėtų pateikti kliento užklausa, kad būtų galima naudoti CORS mechanizmą.

  • Kilmė: Tai nurodo kliento užklausos kilmę. Kai dirbate su priekiniu skydeliu ir užpakaline programa, kaip minėta anksčiau, tai bus jūsų pagrindinio kompiuterio programos pagrindinis kompiuteris.
  • Prieigos kontrolės ir užklausos metodas: Šis metodas naudojamas pateikiant prašymą atlikti patikrinimą, kad būtų nurodytas HTTP metodas, kuris bus naudojamas užklausai pateikti..
  • Prieigos kontrolės-užklausos antraštės: Tai naudojama atliekant prašymą atlikti patikrinimą, kad būtų nurodytos HTTP antraštės, kurios bus naudojamos užklausai pateikti..

Štai pavyzdys, kaip atrodys užklausa

curl -i -X ​​PARINKTYS localhost: 3001 / api \
-H ‘Prieigos kontrolės-užklausos metodas: GET’ \
-H ‘Prieigos kontrolės-užklausos antraštės: turinio tipas, sutikti’ \
-H ‘Kilmė: http: // localhost: 3000’

Išankstinio skrydžio užklausos

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

Nurodžius išankstinio pasirengimo užklausas čia ir ten, ką tai galėtų reikšti??

Išankstinio patikrinimo užklausos įvyksta, kai klientas turi išsiųsti išankstinio patikrinimo užklausą prieš pagrindinę užklausą. Išankstinio patikrinimo užklausa yra daugiau zondas nustatyti, ar serveris palaiko pagrindinę būsimą užklausą. Gavus teigiamą patvirtinimą, tada išsiunčiama pagrindinė užklausa.

Kai užklausa nėra išankstinio patikrinimo užklausa, ji vadinama a paprastas prašymas.

Įgyvendinantys CORS

Daugiausia norėsite nustatyti dalykus programos pagrindinėje programoje. Įdiegimas priklauso nuo jūsų naudojamos struktūros. Šiame vadove mes pažvelgsime, kaip tai padaryti NodeJS ir Rails.

Bėgiai

Aš rekomenduoju jums pasinaudoti Rack-cors perlas. Tada turėsite tai pridėti prie savo konfigūracijos / application.rb failo.

config.middleware.insert_before 0, Rack :: Cors do
leisti daryti
kilmė ‘*’
šaltinis ‘*’,
antraštės:: bet kuri,
atskleisti:% i (prieigos žetono galiojimo pabaigos žetono tipo „uid“ klientas),
metodai:% i (gauti paskelbtą pleistrą ištrinti parinkčių galvą),
įgaliojimai: tiesa
galas
galas

MazgasJS

„Node.js“ tai atrodys taip.

app.all (‘*’, (req, res, next) => {
„res.header“ („Prieigos valdymas-leidimas-kilmė“, „*“);
„res.header“ („Prieigos valdymas-leidimas-metodai“, „PUT, GET, POST, DELETE, PATCH, OPTIONS HEAD“);
„res.header“ („Prieigos valdymas-leidimas-antraštės“, „*“);
res.header („Prieiga – kontrolė – leidimas – kredencialai“, tiesa);
Kitas();
});

Kodo fragmente nustatome kilmę, metodus, antraštes ir kredencialus, kuriems turėtų būti leidžiama pasiekti mūsų serveryje esančius išteklius. Taip pat galite užsisakyti Sqreen kas teikia saugos antraščių modulį, kuris turi būti integruotas su „Ruby“, PHP, „Python“, „Java“, „Go“, „Node.JS“ programomis. Norėdami įdiegti „Apache“ ar „Nginx“, skaitykite šiame vadove.

Išvada

CORS sušvelnina politiką, kad jūsų naršyklė galėtų pasiekti norimus išteklius. Suprasti, kas tai yra, kodėl tai yra būtina, ir kaip jį nustatyti, padės išsiaiškinti problemas, su kuriomis galite susidurti kurdami savo interneto programas.

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