Start med at skille to ting ad, som ændrede sig samtidig: netværksvejen og browserens håndhævelse. En VPN ændrer udgangsadressen; den ændrer ikke sidens oprindelse, som bygges af skema, vært og port. Hvis anmodningen nu lykkes, er noget i svaret ændret, eller anmodningen selv er ændret. At finde ud af hvilket er hele undersøgelsen.

CORS er en headerprotokol, som browseren håndhæver, så intet på netværksvejen kan slå den fra.

Oprindelse er ikke en IP-adresse

En oprindelse er et skema, en vært og en port. Det er ikke den adresse, pakkerne forlader fra, og det er ikke den IP, serveren ser. Derfor kan en VPN ændre hver observerbar adresse og lade oprindelsen være identisk. Browseren sammenligner svarets Access-Control-Allow-Origin med sidens oprindelse, og udgangsadressen indgår aldrig i den sammenligning.

Så en udvidelse eller en proxy, der ser ud til at rette en CORS-fejl, gør noget andet: omskriver headere eller ruter anmodningen, så den ikke længere er cross-origin. Ingen af delene er en egenskab ved VPN’en.

Hvad browseren faktisk sender

For en cross-origin-anmodning, der ikke er enkel, sender browseren først en forhåndskontrol OPTIONS med den påtænkte metode og de påtænkte headere. Serveren skal svare med de tilladelser, den giver, og den egentlige anmodning følger kun, hvis svaret opfylder reglerne. En VPN ændrer den vej, der bærer begge udvekslinger, og kan ændre, hvad mellemliggende tjenester svarer. Den ændrer ikke oprindelsesstrengen eller kravet om forhåndskontrol.

En kommandolinjeklient viser normalt intet af det. Den sender måske ikke headeren Origin, springer ofte forhåndskontrollen over og kan bære andre legitimationsoplysninger. Et svar, der returneres til curl, beviser, at serveren svarede curl.

Find det svar, der ændrede sig

Sammenlign det faktiske svar gennem hver vej, ikke kun statuskoden. Se på de headere, der bærer CORS-tilladelser, indholdstypen, enhver omdirigering, og om en WAF- eller CDN-variant producerede en anden side. En regional afvisning, en godkendelsesomdirigering eller en fejlside uden tilladelsesheaderen fejler alle i browseren, mens de ligner en CORS-fejl. Det er forskelle i leveringsvejen, og det er dem, der skal dokumenteres.

Optag svarheadere fra begge veje, og sammenlign dem linje for linje. Hvis den eneste forskel er den manglende Access-Control-Allow-Origin på én fejlside, har du fundet årsagen.

Ret tjenesten, ikke håndhævelsen

Når tjenesten er din, skal du udtrykkeligt angive de tilladte oprindelser og anmodningsfunktioner og derefter læse de fejl, dens frontend og mellemled producerer. Hvis du ikke gør det, skal du sende tjenesteejeren en renset sammenligning. Medtag aldrig cookies, autorisationsheadere eller sessionseksporter i den rapport, for det er de legitimationsoplysninger, som politikken findes for at beskytte.

Undgå browserudvidelser, der slår CORS fra. De ændrer sikkerhedsgrænsen, mens de skjuler den svarsforskel, der skulle forklares, og de lader den samme fejl blive ved for alle andre brugere.

Optag begge svar, den brugte oprindelse og den valgte vej. Den registrering forvandler et VPN-rygte til en tjenestefejl.

Relaterede artikler