Comeza separando dúas cousas que cambiaron á vez: a ruta de rede e a aplicación do navegador. Unha VPN cambia o enderezo de saída; non cambia a orixe da páxina, que se compón de esquema, host e porto. Se a petición agora ten éxito, algo da resposta cambiou, ou a propia petición. Determinar cal é toda a investigación.

CORS é un protocolo de cabeceiras que aplica o navegador, así que nada na ruta de rede pode desactivalo.

A orixe non é un enderezo IP

Unha orixe é un esquema, un host e un porto. Non é o enderezo do que saen os paquetes nin é o IP que ve o servidor. Por iso unha VPN pode cambiar cada enderezo observable e deixar a orixe idéntica. O navegador compara o Access-Control-Allow-Origin da resposta coa orixe da páxina, e o enderezo de saída nunca entra nesa comparación.

Así que unha extensión ou un proxy que parece arranxar un erro de CORS fai outra cousa: reescribe cabeceiras ou encamiña a petición para que xa non sexa doutra orixe. Ningunha das dúas é unha propiedade da VPN.

O que o navegador envía en realidade

Para unha petición doutra orixe que non é simple, o navegador envía primeiro unha precomprobación OPTIONS co método e as cabeceiras previstos. O servidor debe responder cos permisos que permite, e a petición real só segue se esa resposta cumpre as regras. Unha VPN cambia a ruta que transporta ambos os intercambios e pode cambiar o que responden os servizos intermedios. Non cambia a cadea de orixe nin o requisito de precomprobación.

Un cliente de liña de ordes normalmente non mostra nada diso. Pode non enviar a cabeceira Origin, a miúdo salta a precomprobación e pode levar credenciais distintas. Un corpo devolto a curl demostra que o servidor respondeu a curl.

Atopa a resposta que cambiou

Compara a resposta real por cada ruta, non só o código de estado. Mira as cabeceiras que levan permisos de CORS, o tipo de contido, calquera redirección e se unha variante de WAF ou CDN produciu unha páxina distinta. Un rexeitamento rexional, unha redirección de autenticación ou unha páxina de erro sen a cabeceira de permiso fallan no navegador aínda que parezan un erro de CORS. Son diferenzas da ruta de entrega, e son o que hai que documentar.

Captura as cabeceiras de resposta das dúas rutas e compáraas liña por liña. Se a única diferenza é a falta de Access-Control-Allow-Origin nunha páxina de erro, atopaches a causa.

Arranxa o servizo, non a aplicación

Cando o servizo é teu, declara explicitamente as orixes permitidas e as funcións da petición, e despois le os erros que producen o seu frontend e os seus intermediarios. Se non o fas, envía ao propietario do servizo unha comparación saneada. Nunca inclúas cookies, cabeceiras de autorización nin exportacións de sesión nese informe, porque son as credenciais que a política existe para protexer.

Evita as extensións do navegador que desactivan CORS. Cambian a fronteira de seguridade mentres ocultan a diferenza de resposta que había que explicar, e deixan o mesmo fallo para todos os demais usuarios.

Rexistra ambas as respostas, a orixe usada e a ruta seguida. Ese rexistro converte un rumor sobre VPN nun erro do servizo.

Artigos relacionados