CORS tikrintuvas

Patikrinkite, ar įklijuotas atsakymas leidžia konkrečią naršyklės kilmę, metodą ir užklausos antraštes.

Atsakymas į patikrinimą
Taip pat įklijuokite būsenos eilutę, kai tikrinate atsakymą prieš skrydį.
Schema, pagrindinis kompiuteris ir pasirenkamas prievadas, išsiųstas Origin antraštėje.
Įjunkite užklausoms, kuriose yra slapukų arba HTTP autentifikavimo.
Naršyklės sprendimą

    Išnagrinėti prieigos valdymo laukai

    HTTP status
    Access-Control-Allow-Origin
    Access-Control-Allow-Credentials
    Access-Control-Allow-Methods
    Access-Control-Allow-Headers
    Access-Control-Expose-Headers
    Access-Control-Max-Age

    Įveskite atsakymo ir užklausos informaciją, tada patikrinkite CORS politiką.

    Įklijuokite atsakymą, kad patikrintumėte CORS politiką.

    Antraštės ir išsami užklausos informacija lieka jūsų naršyklėje. Nieko neįkelia ir neišsaugo BroBroGo.

    DUK

    Ar turėčiau įklijuoti tikrąjį atsakymą ar atsakymą prieš skrydį?

    Naudokite faktinį atsakymą, kad patikrintumėte, ar naršyklės kodas gali nuskaityti vieną atsakymą. Naudokite atsakymą „Preflight“ atsakydami OPTIONS, patvirtinantį vėlesnį metodą ir jo prašomus antraštės pavadinimus.

    Kodėl pakaitos simbolis gali sugesti naudojant kredencialus?

    Kai įtraukiami slapukai arba HTTP autentifikavimas, leidžiama kilmė turi tiksliai atitikti užklausos šaltinį. Leidžiamų metodų ir antraščių pakaitos simboliai taip pat praranda pakaitos simbolių reikšmę.

    Ar tinkamas rezultatas įrodo, kad tiesioginė užklausa veiks?

    Ne. Šis rezultatas apima tik įklijuotą atsakymą ir čia įvestą išsamią užklausos informaciją. Peradresavimai, talpykloje saugomi atsakymai, serverio taisyklių keitimas, naršyklės plėtiniai ir tikrasis atsakymas po išankstinio patikrinimo vis tiek gali pakeisti rezultatą.

    Cross-Origin Resource Sharing (CORS) politikos supratimas

    Cross-Origin Resource Sharing (CORS) yra esminis naršyklės saugumo mechanizmas, nustatantis taisykles, kada ir kaip tinklalapis gali prašyti išteklių iš kitos kilmės (angl. origin) serverio. Kilmę apibrėžia schemos (protokolo), pagrindinio kompiuterio adreso ir prievado derinys. Kai naršyklėje veikiantis kodas bando pasiekti kitos kilmės API, naršyklė siunčia užklausą ir tikrina serverio atsakymo HTTP antraštes, kad nustatytų, ar duomenis leidžiama nuskaityti.

    Šis procesas apsaugo naudotojus nuo kenkėjiškų svetainių, bandančių nuskaityti jautrius duomenis iš kitų paslaugų, kuriose naudotojas yra autorizuotas. CORS taisyklių derinimas ir klaidų taisymas yra kasdienė užduotis, su kuria susiduria programinės įrangos kūrėjai. Šis įrankis padeda vizualizuoti ir patikrinti, ar konkretus HTTP atsakymas atitinka naršyklės reikalavimus pagal pateiktus užklausos parametrus.

    Atsakymo tipo pasirinkimas: Faktinis atsakas prieš išankstinį patikrinimą

    Atliekant CORS patikrą, pirmiausia reikia pasirinkti tikrinamo atsakymo tipą. Įrankyje galima pasirinkti vieną iš dviejų parinkčių: „Faktinis atsakas“ arba „Atsakymas prieš skrydį“.

    • Faktinis atsakas: Šis pasirinkimas naudojamas tikrinant tiesioginį atsakymą į duomenų užklausą. Naršyklė vertina šį atsakymą, kad nustatytų, ar jos kodas gali nuskaityti gautą turinį.
    • Atsakymas prieš skrydį (Preflight): Kai užklausa naudoja tam tikrus metodus arba nestandartines antraštes, naršyklė pirmiausia išsiunčia automatinę OPTIONS užklausą. Šis išankstinis patikrinimas reikalauja sėkmingo HTTP būsenos kodo (2xx) ir specifinių antraščių, patvirtinančių, kad vėlesnis metodas ir prašomi antraščių pavadinimai yra leidžiami.

    Jei tikrinamas atsakymas prieš skrydį, kartu su antraštėmis būtina įklijuoti ir HTTP būsenos eilutę, kad įrankis galėtų įvertinti atsakymo sėkmingumą.

    Įvesties parametrai ir jų validavimo taisyklės

    Norint atlikti tikslų CORS vertinimą, įrankiui reikia pateikti šiuos duomenis:

    1. HTTP atsakymo antraštės: Tekstinis laukas, į kurį įklijuojamos serverio grąžintos antraštės. Maksimalus šio lauko ilgis yra 200 000 simbolių. Jei laukas paliekamas tuščias, rodoma klaida „Prieš tikrindami įklijuokite HTTP atsakymo antraštes.“. Jei viršijamas limitas, pateikiama klaida „Šis atsakas yra neįprastai didelis. Laikykite jį po ‹max› simboliais.“. Kiekviena eilutė privalo atitikti HTTP standartą; priešingu atveju rodomi pranešimai „eilutė ‹line› nėra tinkama HTTP antraštė arba būsenos eilutė.“ arba „eilutėje ‹line› yra netinkamas HTTP antraštės pavadinimas.“.
    2. Užklausos kilmė: Šiame lauke nurodoma tiksli užklausos kilmė, pavyzdžiui, https://app.example.com. Čia negali būti URL kelio, užklausos parametrų ar kredencialų. Nesilaikant šio formato, įrankis pateikia klaidą „Įveskite kilmę su tik schema, pagrindiniu kompiuteriu ir pasirenkamu prievadu, pvz., https://app.example.com.“.
    3. Reikalingas metodas: HTTP metodas (pvz., GET, POST, PUT, DELETE). Įvedus netinkamus simbolius, rodoma klaida „Įveskite galiojantį metodo HTTP prieigos raktą.“. Jei bandoma naudoti naršyklės blokuojamą metodą, rodoma klaida „Naršyklės neleidžia naudoti ‹method› metodo fetch užklausose.“.
    4. Prašomi antraščių pavadinimai: Antraštės, kurias ketinama siųsti užklausoje, atskirtos kableliais arba naujomis eilutėmis. Jei įvestas netinkamas pavadinimas, rodoma klaida „„‹header›“ nėra tinkamas HTTP užklausos antraštės pavadinimas.“.
    5. Įtraukti kredencialus: Perjungiklis, nurodantis, ar užklausoje bus naudojami slapukai arba HTTP autentifikavimas.

    Jei įvesties laukuose yra klaidų, bendrasis pranešimas įspėja: „Pataisykite pažymėtą įvestį ir bandykite dar kartą.“.

    Access-Control-Allow-Origin vaidmuo ir apribojimai

    Svarbiausia CORS politikos dalis yra Access-Control-Allow-Origin antraštė. Įrankis analizuoja šią reikšmę ir pateikia vieną iš šių sprendimo priežasčių:

    • „Access-Control-Allow-Origin tiksliai atitinka ‹origin›.“
    • „Access-Control-Allow-Origin leidžia bet kokią šios užklausos kilmę. Trūksta“
    • Access-Control-Allow-Origin.
    • „Access-Control-Allow-Origin yra ‹actual›, o ne ‹expected›.“
    • „Access-Control-Allow-Origin reikšmė neteisinga: ‹value›.“

    Jei Access-Control-Allow-Origin reikšmėje pateikiamos kelios kilmės arba jos atskiriamos kableliais, tokia antraštė laikoma negaliojančia.

    Kredencialų įtaka CORS politikai

    Kai užklausoje naudojami kredencialai (slapukai arba HTTP autentifikavimas), CORS taisyklės tampa kur kas griežtesnės:

    • Pakaitos simbolio apribojimas: Access-Control-Allow-Origin reikšmė negali būti pakaitos simbolis *. Jei ši taisyklė pažeidžiama, įrankis pateikia priežastį „Access-Control-Allow-Origin negali būti *, kai įtraukiami kredencialai.“.
    • Kredencialų patvirtinimas: Serverio atsakyme privalo būti antraštė Access-Control-Allow-Credentials: true. Jei jos nėra, rodoma priežastis „Kredencialų užklausai reikia Access-Control-Allow-Credentials: true.“. Jei reikalavimas įvykdytas, pateikiama „Access-Control-Allow-Credentials yra būtent true.“.
    • Jei kredencialai nenaudojami, ši antraštė neturi įtakos sprendimui, ką nurodo pranešimas „Kredencialai neįtraukti, todėl Access-Control-Allow-Credentials neturi įtakos šiam sprendimui.“.
    • Naudojant kredencialus, pakaitos simboliai (*) praranda savo specialią reikšmę ir leidžiamų metodų bei antraščių sąrašuose.

    Išankstinio patikrinimo (Preflight) vertinimas

    Atliekant išankstinio patikrinimo analizę, įrankis tikrina HTTP būsenos kodą, leidžiamus metodus ir antraštes:

    Tikrinamas elementas Sėkmingas rezultatas / Priežastis Klaidos arba apribojimo pranešimas
    HTTP būsena „Pasirengimo skrydžiui būsena ‹status› sėkminga.“ „Pasirengimo skrydžiui būsena ‹status› nėra sėkminga 2xx būsena.“ <br> „Nebuvo įklijuota HTTP būsenos eilutė, todėl negalima patikrinti reikiamos 2xx išankstinio paleidimo būsenos.“
    Metodai „Išankstinis skrydis leidžia ‹method›.“ <br> „‹method› yra CORS saugiai įtrauktas metodas ir jo nereikia rodyti Access-Control-Allow-Methods.“ „Access-Control-Allow-Methods neleidžia ‹method›.“
    Antraštės „Jokiems prašomiems antraščių pavadinimams nereikia išankstinio patikrinimo patvirtinimo.“ <br> „Išankstinis patikrinimas leidžia naudoti prašomus antraštės pavadinimus: ‹headers›.“ <br> „Access-Control-Allow-Headers: * apima šiuos užklausos pavadinimus be kredencialų: ‹headers›.“ „Access-Control-Allow-Headers neleidžia: ‹headers›.“ <br> „Authorization turi būti aiškiai nurodytas; Access-Control-Allow-Headers: * neapima.“

    Ypatingas dėmesys skiriamas Authorization antraštei. Net jei serveris naudoja Access-Control-Allow-Headers: *, ši antraštė privalo būti išvardyta atskirai ir aiškiai, kitaip naršyklė blokuos užklausą.

    Privatumas ir apdorojimo principai

    Naudojantis šiuo įrankiu, jūsų įvestos HTTP antraštės ir užklausos duomenys yra visiškai saugūs. Visi skaičiavimai ir analizė atliekami tiesiogiai jūsų interneto naršyklėje. Jokie duomenys nėra siunčiami į išorinius serverius, neįkeliami ir neišsaugomi BroBroGo sistemose.

    Taip pat svarbu suprasti įrankio veikimo ribas. Šis tikrintuvas neatlieka realių tinklo užklausų, nesusisiekia su jūsų serveriu, nuskaito tik jūsų įklijuotą tekstą, netikrina DNS ar TLS konfigūracijų ir nekeičia serverio nustatymų. Sėkmingas patikros rezultatas garantuoja tik tai, kad pateikti duomenys atitinka CORS taisykles, tačiau negali numatyti išorinių veiksnių, tokių kaip naršyklės plėtiniai ar tarpiniai serverio peradresavimai.

    Dažniausiai užduodami klausimai (DUK)

    Ar turėčiau įklijuoti tikrąjį atsakymą ar atsakymą prieš skrydį?

    Naudokite faktinį atsakymą, kad patikrintumėte, ar naršyklės kodas gali nuskaityti vieną atsakymą. Naudokite atsakymą „Preflight“ atsakydami OPTIONS, patvirtinantį vėlesnį metodą ir jo prašomus antraštės pavadinimus.

    Kodėl pakaitos simbolis gali sugesti naudojant kredencialus?

    Kai įtraukiami slapukai arba HTTP autentifikavimas, leidžiama kilmė turi tiksliai atitikti užklausos šaltinį. Leidžiamų metodų ir antraščių pakaitos simboliai taip pat praranda pakaitos simbolių reikšmę.

    Ar tinkamas rezultatas įrodo, kad tiesioginė užklausa veiks?

    Ne. Šis rezultatas apima tik įklijuotą atsakymą ir čia įvestą išsamią užklausos informaciją. Peradresavimai, talpykloje saugomi atsakymai, serverio taisyklių keitimas, naršyklės plėtiniai ir tikrasis atsakymas po išankstinio patikrinimo vis tiek gali pakeisti rezultatą.

    Kas turėtų naudoti šį CORS tikrintuvą?

    Įrankis yra skirtas front-end, back-end, API platformų bei operacijų (DevOps) kūrėjams, taip pat visiems, norintiems suprasti, ar naršyklės kodas galės nuskaityti konkretų serverio atsakymą.