Pradėkite atskirdami du dalykus, pasikeitusius vienu metu: tinklo kelią ir naršyklės vykdymą. VPN keičia išėjimo adresą; jis nekeičia puslapio kilmės, kuri sudaryta iš schemos, hosto ir prievado. Jei užklausa dabar pavyksta, kažkas pasikeitė atsakyme arba pasikeitė pati užklausa. Nustatyti, kas būtent, yra visas tyrimas.

CORS yra antraščių protokolas, kurį vykdo naršyklė, todėl niekas tinklo kelyje negali jo išjungti.

Kilmė nėra IP adresas

Kilmė yra schema, hostas ir prievadas. Tai ne adresas, iš kurio išeina paketai, ir ne IP, kurį mato serveris. Todėl VPN gali pakeisti kiekvieną stebimą adresą ir palikti kilmę tą pačią. Naršyklė lygina atsakymo Access-Control-Allow-Origin su puslapio kilme, o išėjimo adresas į šį palyginimą niekada nepatenka.

Taigi plėtinys ar tarpinis serveris, kuris atrodo taisantis CORS klaidą, daro ką kita: perrašo antraštes arba nukreipia užklausą taip, kad ji nebebūtų iš kitos kilmės. Nė viena nėra VPN savybė.

Ką naršyklė iš tikrųjų siunčia

Jei užklausa iš kitos kilmės nėra paprasta, naršyklė pirmiausia siunčia išankstinę patikrą OPTIONS, kuri neša numatytą metodą ir antraštes. Serveris turi atsakyti leidimais, kuriuos suteikia, o tikroji užklausa tęsiama tik jei tas atsakymas atitinka taisykles. VPN keičia kelią, kuriuo keliauja abu mainai, ir gali pakeisti, ką atsako tarpinės paslaugos. Jis nekeičia kilmės eilutės ar išankstinės patikros reikalavimo.

Komandinės eilutės klientas paprastai nieko to nerodo. Jis gali nesiųsti Origin antraštės, dažnai praleidžia išankstinę patikrą ir gali turėti kitus prisijungimo duomenis. curl grąžintas kūnas įrodo, kad serveris atsakė curl.

Raskite pasikeitusį atsakymą

Palyginkite tikrąjį atsakymą kiekviename kelyje, ne tik būsenos kodą. Pažiūrėkite į antraštes, nešančias CORS leidimus, turinio tipą, bet kokį peradresavimą ir ar WAF ar CDN variantas sukūrė kitą puslapį. Regioninis atmetimas, autentifikavimo peradresavimas ar klaidos puslapis be leidimo antraštės visi nepavyksta naršyklėje, nors atrodo kaip CORS klaida. Tai pristatymo kelio skirtumai, ir būtent juos reikia dokumentuoti.

Užfiksuokite abiejų kelių atsakymo antraštes ir palyginkite jas eilutė po eilutės. Jei vienintelis skirtumas yra trūkstama Access-Control-Allow-Origin viename klaidos puslapyje, radote priežastį.

Taisykite paslaugą, o ne vykdymą

Kai paslauga jūsų, aiškiai nurodykite leidžiamas kilmes ir užklausos funkcijas, tada skaitykite klaidas, kurias sukuria jos priekinė dalis ir tarpininkai. Jei to nedarote, nusiųskite paslaugos savininkui išvalytą palyginimą. Niekada neįtraukite į tą ataskaitą slapukų, autorizacijos antraščių ar sesijų eksportų, nes tai yra prisijungimo duomenys, kuriems apsaugoti skirta politika.

Venkite naršyklės plėtinių, kurie išjungia CORS. Jie keičia saugumo ribą, slėpdami atsakymo skirtumą, kurį reikėjo paaiškinti, ir palieka tą pačią nesėkmę visiems kitiems naudotojams.

Užfiksuokite abu atsakymus, naudotą kilmę ir nueitą kelią. Tas įrašas paverčia VPN gandą paslaugos klaida.

Susiję straipsniai