VPN ne može isključiti CORS, on mijenja odgovor
Nova izlazna adresa ne čini dva podrijetla istima. Zabilježite zaglavlja odgovora na oba puta i usporedite ih prije nego okrivite primjenu CORS-a.
Počnite razdvajanjem dviju stvari koje su se promijenile istodobno: mrežnog puta i primjene u pregledniku. VPN mijenja izlaznu adresu; ne mijenja podrijetlo stranice, koje se sastoji od sheme, hosta i porta. Ako zahtjev sada uspijeva, nešto se u odgovoru promijenilo ili se promijenio sam zahtjev. Utvrditi što 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.
Podrijetlo nije IP adresa
Podrijetlo je shema, host i port. To nije adresa s koje paketi izlaze i nije IP koji poslužitelj vidi. Zato VPN može promijeniti svaku vidljivu adresu, a podrijetlo ostaviti istim. Preglednik uspoređuje Access-Control-Allow-Origin iz odgovora s podrijetlom stranice, a izlazna adresa nikada ne ulazi u tu usporedbu.
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 podrijetla. Ni jedno ni drugo nije svojstvo VPN-a.
Što preglednik zapravo šalje
Za zahtjev unakrsnog podrijetla koji nije jednostavan, preglednik najprije šalje prethodnu provjeru OPTIONS s namjeravanom metodom i zaglavljima. Poslužitelj mora odgovoriti dopuštenjima koja dopušta, a pravi zahtjev slijedi samo ako taj odgovor zadovoljava pravila. VPN mijenja put koji nosi obje razmjene i može promijeniti što odgovaraju posredničke usluge. Ne mijenja niz podrijetla ni zahtjev za prethodnom provjerom.
Klijent iz naredbenog retka obično ne pokazuje ništa od toga. Možda ne šalje zaglavlje Origin, često preskače prethodnu provjeru i može nositi drukčije akreditive. Tijelo vraćeno curl-u dokazuje da je poslužitelj odgovorio curl-u.
Pronađite odgovor koji se promijenio
Usporedite stvarni odgovor kroz svaki put, ne samo statusni kod. Pogledajte zaglavlja koja nose CORS dopuštenja, tip sadržaja, svako preusmjeravanje i je li varijanta WAF-a ili CDN-a proizvela drukčiju stranicu. Regionalno odbijanje, preusmjeravanje na prijavu ili stranica greške bez zaglavlja dopuštenja padaju u pregledniku, a izgledaju kao CORS greška. To su razlike u putu dostave i upravo njih treba dokumentirati.
Zabilježite zaglavlja odgovora s oba puta i usporedite 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 podrijetla i mogućnosti zahtjeva, pa pročitajte greške koje proizvode njezin frontend i posrednici. Ako to ne učinite, pošaljite vlasniku usluge očišćenu usporedbu. Nikada u to izvješće ne stavljajte kolačiće, zaglavlja autorizacije ni izvoz 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 podrijetlo i prijeđeni put. Taj zapis pretvara VPN glasinu u grešku usluge.