Počnite razdvajanjem dve stvari koje su se promenile istovremeno: mrežnog puta i primene u pregledaču. VPN menja izlaznu adresu; ne menja poreklo stranice, koje se sastoji od šeme, hosta i porta. Ako zahtev sada uspeva, nešto se u odgovoru promenilo ili se promenio sam zahtev. Utvrditi šta je od toga cela je istraga.

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

Poreklo nije IP adresa

Poreklo je šema, host i port. To nije adresa s koje paketi izlaze i nije IP koji server vidi. Zato VPN može promeniti svaku vidljivu adresu, a poreklo ostaviti istim. Pregledač poredi Access-Control-Allow-Origin iz odgovora s poreklom 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 usmerava zahtev tako da više nije unakrsnog porekla. Ni jedno ni drugo nije svojstvo VPN-a.

Šta pregledač zapravo šalje

Za zahtev unakrsnog porekla koji nije jednostavan, pregledač najpre šalje prethodnu proveru OPTIONS s nameravanom metodom i zaglavljima. Server mora odgovoriti dozvolama koje dopušta, a pravi zahtev sledi samo ako taj odgovor zadovoljava pravila. VPN menja put koji nosi obe razmene i može promeniti šta odgovaraju posredničke usluge. Ne menja niz porekla ni zahtev za prethodnom proverom.

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

Pronađite odgovor koji se promenio

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

Zabelež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 primenu

Kad je usluga vaša, izričito navedite dopuštena porekla i mogućnosti zahteva, 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 izveštaj ne stavljajte kolačiće, zaglavlja autorizacije ni izvoz sesija, jer su to akreditivi koje politika postoji da zaštiti.

Izbegavajte pregledačke dodatke koji isključuju CORS. Oni menjaju sigurnosnu granicu, a skrivaju razliku u odgovoru koju je trebalo objasniti, i ostavljaju isti neuspeh za svakog drugog korisnika.

Zabeležite oba odgovora, korišćeno poreklo i pređeni put. Taj zapis pretvara VPN glasinu u grešku usluge.

Povezani članci