VPN nedokáže vypnúť CORS, mení odpoveď
Nová výstupná adresa nerobí dva pôvody rovnakými. Zachyťte hlavičky odpovede na oboch cestách a porovnajte ich, skôr než obviníte presadzovanie CORS.
Začnite tým, že oddelíte dve veci, ktoré sa zmenili naraz: sieťovú cestu a presadzovanie v prehliadači. VPN mení výstupnú adresu; nemení pôvod stránky, ktorý sa skladá zo schémy, hostiteľa a portu. Ak požiadavka teraz uspeje, niečo sa zmenilo v odpovedi alebo sa zmenila samotná požiadavka. Zistiť, čo z toho, je celé vyšetrovanie.
CORS je protokol hlavičiek, ktorý presadzuje prehliadač, takže nič na sieťovej ceste ho nemôže vypnúť.
Pôvod nie je IP adresa
Pôvod je schéma, hostiteľ a port. Nie je to adresa, z ktorej odchádzajú pakety, a nie je to IP, ktorú vidí server. Preto VPN môže zmeniť každú pozorovateľnú adresu a pôvod nechať rovnaký. Prehliadač porovnáva Access-Control-Allow-Origin z odpovede s pôvodom stránky a výstupná adresa do tohto porovnania nikdy nevstupuje.
Rozšírenie alebo proxy, ktoré vyzerá, že opravuje chybu CORS, teda robí niečo iné: prepisuje hlavičky alebo smeruje požiadavku tak, že už nie je krížového pôvodu. Ani jedno nie je vlastnosťou VPN.
Čo prehliadač skutočne posiela
Pri požiadavke krížového pôvodu, ktorá nie je jednoduchá, prehliadač najprv pošle predbežnú kontrolu OPTIONS s plánovanou metódou a hlavičkami. Server musí odpovedať oprávneniami, ktoré povoľuje, a skutočná požiadavka nasleduje len vtedy, ak táto odpoveď spĺňa pravidlá. VPN mení cestu, ktorá nesie obe výmeny, a môže zmeniť, čo odpovedajú medziľahlé služby. Nemení reťazec pôvodu ani požiadavku predbežnej kontroly.
Klient z príkazového riadka zvyčajne nič z toho neukáže. Možno neposiela hlavičku Origin, často preskakuje predbežnú kontrolu a môže niesť iné prihlasovacie údaje. Telo vrátené curl-u dokazuje, že server odpovedal curl-u.
Nájdite odpoveď, ktorá sa zmenila
Porovnajte skutočnú odpoveď na každej ceste, nielen stavový kód. Pozrite sa na hlavičky nesúce oprávnenia CORS, typ obsahu, prípadné presmerovanie a či variant WAF alebo CDN nevytvoril inú stránku. Regionálne odmietnutie, presmerovanie na prihlásenie alebo chybová stránka bez hlavičky oprávnenia zlyhávajú v prehliadači, hoci vyzerajú ako chyba CORS. To sú rozdiely v doručovacej ceste a práve tie treba zdokumentovať.
Zachyťte hlavičky odpovede z oboch ciest a porovnajte ich riadok po riadku. Ak je jediným rozdielom chýbajúca Access-Control-Allow-Origin na jednej chybovej stránke, našli ste príčinu.
Opravte službu, nie presadzovanie
Keď je služba vaša, výslovne uveďte povolené pôvody a vlastnosti požiadavky, potom čítajte chyby, ktoré vytvára jej frontend a sprostredkovatelia. Ak to neurobíte, pošlite vlastníkovi služby očistené porovnanie. Nikdy do tej správy nezaradťe cookies, autorizačné hlavičky ani exporty relácií, pretože to sú prihlasovacie údaje, ktoré má politika chrániť.
Vyhnite sa rozšíreniam prehliadača, ktoré vypínajú CORS. Menia bezpečnostnú hranicu, pričom skrývajú rozdiel v odpovedi, ktorý bolo treba vysvetliť, a rovnaké zlyhanie nechávajú na mieste pre každého ďalšieho používateľa.
Zaznamenajte obe odpovede, použitý pôvod a absolvovanú cestu. Tento záznam mení povesť o VPN na chybu služby.