CORS provjera

Provjerite dopušta li zalijepljeni odgovor određeno podrijetlo preglednika, metodu i zaglavlja zahtjeva.

Odgovor na provjeru
Zalijepite i redak statusa kada provjeravate odgovor prije leta.
Shema, host i opcijski port poslani u zaglavlju Izvor.
Uključite za zahtjeve koji uključuju kolačiće ili HTTP autentifikaciju.
Odluka o pregledniku

    Raščlanjena polja kontrole pristupa

    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

    Unesite pojedinosti o odgovoru i zahtjevu, a zatim provjerite pravila CORS.

    Zalijepite odgovor da biste provjerili njegova CORS pravila.

    Vaša zaglavlja i detalji zahtjeva ostaju u vašem pregledniku. BroBroGo ništa ne učitava niti sprema.

    Česta pitanja

    Trebam li zalijepiti stvarni odgovor ili odgovor prije leta?

    Koristite Stvarni odgovor da provjerite može li kod preglednika pročitati jedan odgovor. Koristite Preflight odgovor za OPTIONS odgovor koji odobrava kasniju metodu i njezina tražena imena zaglavlja.

    Zašto zamjenski znak može biti neuspješan s vjerodajnicama?

    Kada su uključeni kolačići ili HTTP autentifikacija, dopušteno podrijetlo mora točno odgovarati podrijetlu koje zahtijeva. Zamjenski znakovi za dopuštene metode i zaglavlja također gube svoje značenje zamjenskih znakova.

    Dokazuje li prolazan rezultat da će zahtjev uživo funkcionirati?

    Ne. Ovaj rezultat pokriva samo zalijepljeni odgovor i detalje zahtjeva koji su ovdje uneseni. Preusmjeravanja, predmemorirani odgovori, mijenjanje pravila poslužitelja, proširenja preglednika i stvarni odgovor nakon pregleda još uvijek mogu promijeniti ishod.

    Razumijevanje CORS pravila i uloga zaglavlja Access-Control-Allow-Origin

    Dijeljenje resursa između različitih podrijetla (CORS) je sigurnosni mehanizam koji preglednici koriste kako bi ograničili skripte na web stranicama u interakciji s resursima s drugog podrijetla. Podrijetlo je definirano kombinacijom sheme, poslužitelja (host) i opcijskog porta. Kada klijentska aplikacija šalje zahtjev prema API-ju koji se nalazi na domeni različitoj od one na kojoj je aplikacija učitana, preglednik primjenjuje CORS pravila kako bi utvrdio je li taj prijenos podataka dopušten.

    Ključnu ulogu u ovom procesu ima zaglavlje odgovora Access-Control-Allow-Origin. Ono govori pregledniku koje vanjske domene smiju pristupiti resursu. Ako poslužitelj u odgovoru ne pošalje ovo zaglavlje, ili ako se vrijednost zaglavlja ne podudara s podrijetlom s kojeg se šalje zahtjev, preglednik će blokirati pristup podacima.

    Kako funkcioniraju Access-Control-Allow-Methods i Access-Control-Allow-Headers u preflight zahtjevima

    Za određene vrste HTTP zahtjeva koji mogu imati nuspojave na podatke poslužitelja, preglednik najprije šalje preliminarni zahtjev, poznat kao preflight zahtjev, koristeći HTTP metodu OPTIONS. Svrha ovog koraka je provjera dopuštenja prije nego što se stvarni zahtjev uopće pošalje.

    Tijekom ovog procesa, zaglavlja Access-Control-Allow-Methods i Access-Control-Allow-Headers određuju koje su metode i zaglavlja dopušteni:

    • Access-Control-Allow-Methods: Određuje koje HTTP metode (poput GET, POST, PUT, DELETE) poslužitelj dopušta za cross-origin zahtjeve.
    • Access-Control-Allow-Headers: Određuje koja se specifična HTTP zaglavlja mogu koristiti prilikom slanja stvarnog zahtjeva.

    Ako stvarni zahtjev zahtijeva metodu ili zaglavlja koja poslužitelj nije odobrio u preflight odgovoru, preglednik će zaustaviti izvršavanje zahtjeva.

    Utjecaj vjerodajnica na CORS pravila i važnost Access-Control-Allow-Credentials

    Kada zahtjevi s različitih podrijetla moraju uključivati osjetljive podatke poput kolačića ili HTTP autentifikacije, pravila CORS-a postaju znatno stroža. U takvim slučajevima, samo postojanje zaglavlja Access-Control-Allow-Origin nije dovoljno.

    Poslužitelj mora eksplicitno poslati zaglavlje Access-Control-Allow-Credentials s točnom vrijednošću true. Ako je ovaj parametar postavljen na bilo koju drugu vrijednost ili ako uopće nedostaje, preglednik će blokirati zahtjev koji sadrži vjerodajnice.

    Uvođenje vjerodajnica također izravno utječe na ponašanje zamjenskih znakova (*). Kada su vjerodajnice uključene, Access-Control-Allow-Origin ne može biti *. Podrijetlo u zaglavlju odgovora mora točno odgovarati podrijetlu zahtjeva. Isto tako, zamjenski znakovi za dopuštene metode i zaglavlja gube svoje značenje zamjenskih znakova kada se koriste vjerodajnice, što zahtijeva njihovo pojedinačno i eksplicitno navođenje.

    Specifično rukovanje Authorization zaglavljem i ponašanje zamjenskih znakova

    U CORS specifikaciji, zaglavlje Authorization ima poseban status. Čak i kada zahtjev ne uključuje vjerodajnice i kada poslužitelj koristi zamjenski znak za zaglavlja (Access-Control-Allow-Headers: *), taj zamjenski znak ne pokriva Authorization.

    Ako klijent šalje zaglavlje Authorization, ono mora biti izričito i poimence navedeno unutar zaglavlja Access-Control-Allow-Headers na poslužitelju. U suprotnom, preglednik će blokirati zahtjev zbog neovlaštenog zaglavlja.

    Važnost HTTP statusnih kodova u preflight odgovorima

    Za uspješno izvršavanje preflight provjere, HTTP statusni kod odgovora na OPTIONS zahtjev mora biti uspješan status iz serije 2xx. Ako poslužitelj vrati status koji nije u rasponu 2xx, preglednik će smatrati da preflight provjera nije uspjela i blokirat će slanje stvarnog zahtjeva. Prilikom analize preflight odgovora, prisutnost i ispravnost HTTP statusnog retka ključni su za donošenje konačne odluke o dopuštenju.

    Razlika između stvarnih odgovora i odgovora prije leta

    Za ispravnu dijagnostiku CORS problema, važno je razlikovati dvije vrste odgovora koje poslužitelj šalje:

    1. Stvarni odgovor: Odgovor koji poslužitelj šalje na stvarni zahtjev (npr. GET ili POST). Provjerom ovog odgovora utvrđuje se može li klijentski kod u pregledniku pročitati podatke koji su vraćeni.
    2. Odgovor prije leta: Odgovor poslužitelja na preliminarni OPTIONS zahtjev. Ovaj odgovor ne sadrži stvarne podatke aplikacije, već isključivo CORS zaglavlja koja odobravaju ili odbijaju kasniju metodu i njezina tražena zaglavlja.

    Kako radi CORS provjera

    Ovaj alat omogućuje brzu provjeru i analizu CORS zaglavlja izravno u vašem web pregledniku. Vaša zaglavlja i detalji zahtjeva ostaju u vašem pregledniku. BroBroGo ništa ne učitava niti sprema, čime se osigurava privatnost vaših podataka tijekom analize.

    Alat radi tako da analizira unesena zaglavlja i uspoređuje ih s parametrima zahtjeva koje definirate. On ne kontaktira poslužitelj, ne čita URL-ove, ne postavlja kolačiće, ne provjerava DNS/TLS niti mijenja konfiguraciju poslužitelja. Prolazan rezultat provjere odnosi se isključivo na unesene podatke i ne jamči da će stvarni zahtjev u produkciji raditi ako postoje drugi faktori poput preusmjeravanja, predmemorije ili proširenja preglednika.

    Pravila unosa i ograničenja

    Prilikom korištenja alata potrebno je poštovati sljedeća pravila za unos podataka:

    • Maksimalna duljina: Unos za zaglavlja HTTP odgovora može sadržavati najviše 200.000 znakova. Ako premašite ovo ograničenje, prikazat će se poruka: "Ovaj odgovor je neuobičajeno velik. Držite ga pod znakovima ‹max›.".
    • Prazan unos: Ako pokušate pokrenuti provjeru bez unesenih zaglavlja, sustav će javiti pogrešku: "Zalijepite zaglavlja HTTP odgovora prije provjere.".
    • Neispravan format: Svaki redak mora biti važeće HTTP zaglavlje ili statusni redak. U slučaju pogreške, alat prikazuje poruku: "Redak ‹line› nije važeće HTTP zaglavlje ili statusni redak." ili "Redak ‹line› sadrži nevažeći naziv HTTP zaglavlja.".
    • Podrijetlo zahtjeva: Mora se unijeti isključivo čisto podrijetlo (shema, host i opcijski port, npr. https://app.example.com) bez staza, upita ili vjerodajnica. Neispravan unos rezultira porukom: "Unesite izvor samo sa shemom, hostom i opcijskim portom, kao što je https://app.example.com.".
    • Metoda: Unos mora biti važeći token HTTP metode. Ako je token neispravan, javlja se pogreška: "Unesite važeći token HTTP metode.". Ako se unese zabranjena metoda, prikazuje se: "Preglednici ne dopuštaju metodu ‹method› u fetch zahtjevima.".
    • Nazivi zaglavlja: Ako unesete nevažeće ime zaglavlja u polje za tražena zaglavlja, sustav će prikazati: “‹header›” nije važeće ime zaglavlja HTTP zahtjeva.".

    U slučaju bilo kakvih općih problema s unosom, alat će prikazati obavijest: "Popravite označeni unos i pokušajte ponovno.".

    Mogući ishodi i odluke preglednika

    Nakon analize, alat će prikazati jedan od sljedećih statusa u polju "Odluka o pregledniku":

    • "Zalijepite odgovor da biste provjerili njegova CORS pravila." (početno stanje).
    • "Unesite pojedinosti o odgovoru i zahtjevu, a zatim provjerite pravila CORS." (kada nema unosa).
    • "Dopušteno zalijepljenim CORS odgovorom.".
    • "Blokirano zalijepljenim CORS odgovorom.".
    • "Zaglavlja prolaze, ali status prije leta nije poznat." (kada nedostaje statusni redak u preflight provjeri).

    Uz odluku, alat prikazuje i detaljna objašnjenja, kao što su:

    • "Access-Control-Allow-Origin točno odgovara ‹origin›."
    • "Access-Control-Allow-Origin dopušta bilo koje podrijetlo za ovaj zahtjev."
    • "Access-Control-Allow-Origin nedostaje."
    • "Access-Control-Allow-Origin ne može biti * kada su vjerodajnice uključene."
    • "Access-Control-Allow-Origin je ‹actual›, a ne ‹expected›."
    • "Access-Control-Allow-Origin ima nevažeću vrijednost: ‹value›."
    • "Access-Control-Allow-Credentials je točno."
    • "Zahtjev s vjerodajnicom treba Access-Control-Allow-Credentials: istina."
    • "Akreditivi nisu uključeni, tako da Access-Control-Allow-Credentials ne utječe na ovu odluku."
    • "Status prije leta ‹status› je uspješan."
    • "Status prije leta ‹status› nije uspješan status 2xx."
    • "Nije zalijepljen HTTP statusni redak, tako da se ne može provjeriti traženi 2xx status prije provjere."
    • "Prije leta dopušta ‹method›."
    • "‹method› je sigurna metoda CORS i ne mora se pojavljivati u Access-Control-Allow-Methods."
    • "Access-Control-Allow-Methods ne dopušta ‹method›."
    • "Nijedan traženi naziv zaglavlja ne treba prethodno odobrenje."
    • "Predispitivanje dopušta tražena imena zaglavlja: ‹headers›."
    • "Access-Control-Allow-Headers: * pokriva ova imena za zahtjev bez vjerodajnica: ‹headers›."
    • "Access-Control-Allow-Headers ne dopušta: ‹headers›."
    • "Authorization mora biti izričito naveden; Access-Control-Allow-Headers: * to ne pokriva."

    Često postavljana pitanja (FAQ)

    Trebam li zalijepiti stvarni odgovor ili odgovor prije leta?

    Koristite Stvarni odgovor da provjerite može li kod preglednika pročitati jedan odgovor. Koristite Preflight odgovor za OPTIONS odgovor koji odobrava kasniju metodu i njezina tražena imena zaglavlja.

    Zašto zamjenski znak može biti neuspješan s vjerodajnicama?

    Kada su uključeni kolačići ili HTTP autentifikacija, dopušteno podrijetlo mora točno odgovarati podrijetlu koje zahtijeva. Zamjenski znakovi za dopuštene metode i zaglavlja također gube svoje značenje zamjenskih znakova.

    Dokazuje li prolazan rezultat da će zahtjev uživo funkcionirati?

    Ne. Ovaj rezultat pokriva samo zalijepljeni odgovor i detalje zahtjeva koji su ovdje uneseni. Preusmjeravanja, predmemorirani odgovori, mijenjanje pravila poslužitelja, proširenja preglednika i stvarni odgovor nakon pregleda još uvijek mogu promijeniti ishod.