Počnite razdvajanjem dvije stvari koje su se promijenile istovremeno: mrežnog puta i primjene u pregledniku. VPN mijenja izlaznu adresu; ne mijenja porijeklo stranice, koje se sastoji od šeme, hosta i porta. Ako zahtjev sada uspijeva, nešto se u odgovoru promijenilo ili se promijenio sam zahtjev. Utvrditi šta je od toga cijela je istraga.

CORS je protokol zaglavlja koji primjenjuje preglednik, pa ništa na mrežnom putu ne može ga isključiti.

Porijeklo nije IP adresa

Porijeklo je šema, host i port. To nije adresa s koje paketi izlaze i nije IP koji server vidi. Zato VPN može promijeniti svaku vidljivu adresu, a porijeklo ostaviti istim. Preglednik poredi Access-Control-Allow-Origin iz odgovora s porijeklom stranice, a izlazna adresa nikada ne ulazi u to poređenje.

Zato dodatak ili proxy koji izgleda kao da popravlja CORS grešku radi nešto drugo: prepisuje zaglavlja ili usmjerava zahtjev tako da više nije unakrsnog porijekla. Ni jedno ni drugo nije svojstvo VPN-a.

Šta preglednik zapravo šalje

Za zahtjev unakrsnog porijekla koji nije jednostavan, preglednik prvo šalje prethodnu provjeru OPTIONS s namjeravanim metodom i zaglavljima. Server mora odgovoriti dozvolama koje dopušta, a pravi zahtjev slijedi samo ako taj odgovor zadovoljava pravila. VPN mijenja put koji nosi oba razmjena i može promijeniti šta odgovaraju posredničke usluge. Ne mijenja niz porijekla ni zahtjev za prethodnom provjerom.

Klijent iz komandne linije obično ne pokazuje ništa od toga. Možda ne šalje zaglavlje Origin, često preskače prethodnu provjeru i može nositi drugačije akreditive. Tijelo vraćeno curl-u dokazuje da je server odgovorio curl-u.

Pronađite odgovor koji se promijenio

Uporedite stvarni odgovor kroz svaki put, ne samo statusni kod. Pogledajte zaglavlja koja nose CORS dozvole, tip sadržaja, svako preusmjerenje i da li je varijanta WAF-a ili CDN-a proizvela drugačiju stranicu. Regionalno odbijanje, preusmjerenje na prijavu ili stranica greške bez zaglavlja dozvole padaju u pregledniku, a izgledaju kao CORS greška. To su razlike u putu dostave i upravo njih treba dokumentovati.

Zabilježite zaglavlja odgovora s oba puta i uporedite ih red po red. Ako je jedina razlika nedostatak Access-Control-Allow-Origin na jednoj stranici greške, pronašli ste uzrok.

Popravite uslugu, ne primjenu

Kad je usluga vaša, izričito navedite dopuštena porijekla i mogućnosti zahtjeva, pa pročitajte greške koje proizvode njen frontend i posrednici. Ako to ne učinite, pošaljite vlasniku usluge očišćeno poređenje. Nikada u taj izvještaj ne stavljajte kolačiće, zaglavlja autorizacije ni izvoze sesija, jer su to akreditivi koje politika postoji da zaštiti.

Izbjegavajte pregledničke dodatke koji isključuju CORS. Oni mijenjaju sigurnosnu granicu, a skrivaju razliku u odgovoru koju je trebalo objasniti, i ostavljaju isti neuspjeh za svakog drugog korisnika.

Zabilježite oba odgovora, korišteno porijeklo i pređeni put. Taj zapis pretvara VPN glasinu u grešku usluge.

Povezani članci