Un VPN nu poate dezactiva CORS, el schimbă răspunsul
O adresă de ieșire nouă nu face două origini identice. Înregistrați antetele răspunsului pe ambele căi și comparați-le înainte de a da vina pe aplicarea CORS.
Începeți prin a separa două lucruri care s-au schimbat simultan: calea de rețea și aplicarea de către browser. Un VPN schimbă adresa de ieșire; nu schimbă originea paginii, care este formată din schemă, gazdă și port. Dacă cererea reușește acum, ceva din răspuns s-a schimbat, sau cererea în sine s-a schimbat. A stabili care dintre ele este întreaga investigație.
CORS este un protocol de antete aplicat de browser, deci nimic de pe calea de rețea nu îl poate dezactiva.
Originea nu este o adresă IP
O origine este o schemă, o gazdă și un port. Nu este adresa de la care pleacă pachetele și nu este IP-ul pe care îl vede serverul. De aceea un VPN poate schimba fiecare adresă observabilă și lăsa originea identică. Browserul compară Access-Control-Allow-Origin din răspuns cu originea paginii, iar adresa de ieșire nu intră niciodată în acea comparație.
Așadar, o extensie sau un proxy care pare să repare o eroare CORS face altceva: rescrie antete sau rutează cererea astfel încât să nu mai fie de altă origine. Niciuna nu este o proprietate a VPN-ului.
Ce trimite de fapt browserul
Pentru o cerere de altă origine care nu este simplă, browserul trimite mai întâi o verificare prealabilă OPTIONS, purtând metoda și antetele intenționate. Serverul trebuie să răspundă cu permisiunile pe care le acordă, iar cererea reală urmează doar dacă acel răspuns respectă regulile. Un VPN schimbă calea care transportă ambele schimburi și poate schimba ce răspund serviciile intermediare. Nu schimbă șirul originii sau cerința verificării prealabile.
Un client din linia de comandă de obicei nu arată nimic din asta. Poate să nu trimită antetul Origin, deseori sare peste verificarea prealabilă și poate purta alte acreditări. Un corp returnat către curl dovedește că serverul a răspuns lui curl.
Găsiți răspunsul care s-a schimbat
Comparați răspunsul real pe fiecare cale, nu doar codul de stare. Uitați-vă la antetele care poartă permisiuni CORS, la tipul conținutului, la orice redirecționare și dacă o variantă WAF sau CDN a produs o altă pagină. O refuzare regională, o redirecționare de autentificare sau o pagină de eroare fără antetul de permisiune eșuează în browser deși par o eroare CORS. Sunt diferențe ale căii de livrare și exact acestea trebuie documentate.
Înregistrați antetele răspunsului de pe ambele căi și comparați-le linie cu linie. Dacă singura diferență este lipsa Access-Control-Allow-Origin pe o pagină de eroare, ați găsit cauza.
Reparați serviciul, nu aplicarea
Când serviciul este al dumneavoastră, declarați explicit originile permise și funcțiile cererii, apoi citiți erorile pe care le produc frontendul și intermediarii săi. Dacă nu o faceți, trimiteți proprietarului serviciului o comparație curățată. Nu includeți niciodată cookie-uri, antete de autorizare sau exporturi de sesiune în acel raport, pentru că acestea sunt acreditările pe care politica există să le protejeze.
Evitați extensiile de browser care dezactivează CORS. Ele schimbă granița de securitate în timp ce ascund diferența de răspuns care trebuia explicată și lasă aceeași defecțiune pentru toți ceilalți utilizatori.
Înregistrați ambele răspunsuri, originea folosită și calea parcursă. Acea înregistrare transformă un zvon despre VPN într-o eroare a serviciului.