← Artículos

HTTP FIELD GUIDE

CORS y solicitudes HTTP del navegador

Entiende por qué cURL funciona, pero una página web falla con la misma solicitud.

¿Por qué bloquea el navegador?

Las páginas siguen la política del mismo origen. Para fetch entre orígenes, el servidor de destino debe permitir el acceso mediante cabeceras CORS. Ciertos métodos y cabeceras provocan una solicitud OPTIONS previa. Si esta falla, la solicitud real quizá nunca se envíe.

¿En qué se diferencia cURL?

cURL no está sujeto a CORS del navegador. Que funcione en una terminal demuestra acceso desde ese equipo, no que una página pueda leer la respuesta. El navegador controla Host y Cookie, y puede bloquear HTTP inseguro desde una página HTTPS.

¿Cómo investigar?

En la pestaña Red, revisa la solicitud previa, Origin y las cabeceras de respuesta. Comprueba Access-Control-Allow-Origin y los métodos y cabeceras permitidos. no-cors no soluciona el problema: produce una respuesta opaca cuyo estado y contenido no se pueden leer. Si la API no permite CORS, usa un cliente local confiable o un relay protegido.

Referencias