Kuptimi i politikës CORS dhe funksioni i mjetit
Mjeti CORS Kontrollues ju ndihmon të kuptoni nëse një shfletues ueb do të lejonte një kërkesë specifike me origjinë të kryqëzuar (cross-origin). Ky vlerësim bazohet plotësisht në titujt e përgjigjeve HTTP që ju ofroni dhe në detajet specifike të kërkesës suaj. Duke ngjitur titujt e përgjigjes dhe duke specifikuar origjinën, metodën, titujt e kërkesës, si dhe nëse përfshihen kredencialet, mjeti ju tregon nëse shfletuesi do ta lejonte këtë kërkesë, duke shpjeguar vendimin e tij sipas rregullave të CORS.
Ky kontrollues është i vlefshëm për një sërë përdoruesish që punojnë me integrimin e sistemeve në ueb:
- Zhvilluesit front-end.
- Zhvilluesit back-end.
- Zhvilluesit e platformave API.
- Zhvilluesit e operacioneve (DevOps).
- Kushdo që përpiqet të kuptojë nëse kodi i shfletuesit mund të lexojë një përgjigje specifike.
- Kushdo që kontrollon nëse një përgjigje
OPTIONSmiraton një metodë të mëvonshme dhe emrat e saj të kërkuar të kryesisë.
Konfigurimi i të dhënave hyrëse (Inputs)
Për të kryer një kontroll të saktë, mjeti kërkon plotësimin e disa fushave specifike:
- Përgjigje për kontrollin: Një zgjedhje midis opsioneve Përgjigja aktuale ose Përgjigjja e kontrollit paraprak.
- HTTP titujt e përgjigjeve: Kutia e tekstit ku ngjiten titujt e përgjigjes HTTP. Për përgjigjet e kontrollit paraprak, duhet të përfshihet edhe rreshti i statusit. Ky input ka një kufi maksimal prej 200,000 karakteresh.
- Kërkoni origjinën: Skema, hosti dhe porta opsionale e origjinës (për shembull,
https://app.example.com). Duhet të jetë një origjinë e pastër osenull, pa shtigje URL-je, query apo kredenciale. - Metoda e kërkuar: Metoda HTTP që dëshironi të përdorni për kërkesën.
- Emrat e kërkuar të kokave: Emrat e titujve nga
Access-Control-Request-Headers, të ndarë me presje ose me rreshta të rinj (për shembull,Content-Type, Authorization). - Përfshini kredencialet: Një çelës (toggle) për të treguar nëse kërkesa përfshin cookies ose vërtetim HTTP.
Nëse të dhënat e futura nuk janë të sakta, mjeti do të shfaqë mesazhin e përgjithshëm: "Rregulloni hyrjen e theksuar dhe provoni përsëri.".
Mesazhet e gabimit gjatë validimit
Gjatë futjes së të dhënave, mjeti kryen kontrolle të rrepta dhe mund të shfaqë gabimet e mëposhtme:
- Nëse fusha e titujve është bosh: "Ngjitni HTTP titujt e përgjigjeve përpara se të kontrolloni.".
- Nëse tejkalohet limiti i madhësisë: "Kjo përgjigje është jashtëzakonisht e madhe. Mbajeni nën
‹max›karaktere.". - Nëse një rresht i titujve është i pavlefshëm: "Rreshti
‹line›nuk është një titull i vlefshëm HTTP ose rresht statusi.". - Nëse emri i një titulli është i pavlefshëm: "Rreshti
‹line›përmban një emër të pavlefshëm të kokës HTTP.". - Nëse origjina nuk është e saktë: "Futni një origjinë vetëm me një skemë, host dhe port opsional, si https://app.example.com.".
- Nëse metoda HTTP është e pavlefshme: "Futni një shenjë të vlefshme të metodës HTTP.".
- Nëse metoda është e ndaluar nga shfletuesit: "Shfletuesit nuk lejojnë metodën
‹method›në kërkesat e marrjes.". - Nëse një titull i kërkuar është i pavlefshëm: "
‹header›nuk është një emër i vlefshëm i HTTP të kryesisë së kërkesës.".
Vendimi i shfletuesit dhe interpretimi i rezultateve
Pas kryerjes së kontrollit, mjeti shfaq një nga gjendjet e mëposhtme te Vendimi i shfletuesit:
- Ngjitni një përgjigje për të kontrolluar politikën e saj CORS. (Gjendja fillestare).
- Futni një përgjigje dhe detajet e kërkesës, më pas kontrolloni politikën e CORS. (Kur nuk ka të dhëna).
- Lejohet nga përgjigja e ngjitur CORS..
- Bllokuar nga përgjigja e ngjitur CORS..
- Titujt kalojnë, por statusi i para-fluturimit është i panjohur..
Përveç vendimit, mjeti shfaq Fushat e analizuara të kontrollit të aksesit (ose "Jo i pranishëm" nëse ato mungojnë) dhe arsyet specifike që çuan në këtë vendim.
Rregullat e CORS dhe rastet e veçanta
Sjellja e shfletuesit ndryshon në mënyrë drastike në varësi të pranisë së kredencialeve dhe përdorimit të simboleve zëvendësuese (wildcards *):
- Kredencialet dhe Origjina: Kur përfshihen kredencialet,
Access-Control-Allow-Originnuk mund të jetë*. Gjithashtu,Access-Control-Allow-Credentialsduhet të jetë saktësishttrue. Nëse nuk përfshihen kredencialet, ky titull nuk ndikon në vendim. - Humbja e kuptimit të Wildcard: Kur përfshihen kredencialet, simbolet zëvendësuese (
*) për metodat dhe titujt e lejuar humbasin kuptimin e tyre si wildcard. - Vlerat e shumëfishta: Nëse
Access-Control-Allow-Originpërmban vlera të shumëfishta ose është i ndarë me presje, ai konsiderohet i pavlefshëm. - Trajtimi i titullit Authorization: Ky titull duhet të renditet gjithmonë në mënyrë eksplicite në
Access-Control-Allow-Headers. Përdorimi iAccess-Control-Allow-Headers: *nuk e mbulon atë, edhe nëse nuk përdoren kredenciale. - Statusi i kontrollit paraprak: Nëse një përgjigje e kontrollit paraprak nuk përfshin një rresht statusi HTTP, rezultati i kontrollit do të jetë "i panjohur" (indeterminate) pasi statusi i kërkuar i suksesshëm 2xx nuk mund të verifikohet.
Kufizimet e mjetit dhe privatësia
Ky mjet funksionon plotësisht brenda shfletuesit tuaj. Ai vetëm analizon titujt e përgjigjes dhe detajet e kërkesës që ju keni ngjitur. Mjeti nuk kontakton asnjë server të jashtëm, nuk lexon URL, nuk vendos cookies, nuk kontrollon DNS/TLS dhe nuk ndryshon konfigurimet e serverit.
Një rezultat kalimtar tregon vetëm se të dhënat e ngjitura përputhen me rregullat e CORS. Ai nuk garanton që kërkesa reale do të funksionojë, pasi nuk mund të parashikojë ridrejtimet, përgjigjet e memorizuara (cache), ndryshimet e rregullave në server, ndërhyrjet nga shtesat e shfletuesit (extensions) ose përgjigjen aktuale që kthehet pas një kontrolli paraprak.
Sa i përket privatësisë, titujt tuaj dhe detajet e kërkesave qëndrojnë në shfletuesin tuaj. Asgjë nuk ngarkohet ose ruhet nga BroBroGo.
Pyetje të shpeshta (FAQ)
A duhet të ngjit përgjigjen aktuale apo përgjigjen paraprake?
Përdorni përgjigjen aktuale për të kontrolluar nëse kodi i shfletuesit mund të lexojë një përgjigje. Përdorni përgjigjen e parafluturimit për përgjigjen e OPTIONS që miraton një metodë të mëvonshme dhe emrat e saj të kërkuar të kryesisë.
Pse një wildcard mund të dështojë me kredencialet?
Kur përfshihen cookies ose vërtetimi i HTTP, origjina e lejuar duhet të përputhet saktësisht me origjinën kërkuese. Wildcards për metodat dhe titujt e lejuara gjithashtu humbasin kuptimin e tyre wildcard.
A vërteton një rezultat kalimtar se kërkesa e drejtpërdrejtë do të funksionojë?
Jo. Ky rezultat mbulon vetëm përgjigjen e ngjitur dhe detajet e kërkesës të futura këtu. Ridrejtimet, përgjigjet e memorizuara, ndryshimi i rregullave të serverit, shtesat e shfletuesit dhe përgjigja aktuale pas një kontrolli paraprak mund të ndryshojnë rezultatin.