- CORS (Cross-Origin Resource Sharing)
- Compartición de Recursos de Origen Cruzado, estándar W3C, que permite al servidor declarar qué orígenes pueden acceder a recursos mediante nuevos campos de cabecera HTTP, es la solución oficial de los navegadores modernos para resolver problemas cross-origin.
- Política del Mismo Origen (Same-Origin Policy)
- Mecanismo de seguridad central del navegador; solo cuando protocolo, dominio y puerto son exactamente iguales se considera mismo origen, y JavaScript de orígenes diferentes por defecto no puede leer los recursos del otro.
- Solicitud Preflight (Preflight Request)
- Solicitud con método OPTIONS que el navegador envía automáticamente primero para solicitudes cross-origin no simples, usada para preguntar al servidor si permite la solicitud real posterior; solo después de pasar el preflight se envía la solicitud verdadera.
- Solicitud Simple (Simple Request)
- Solicitud cross-origin que cumple condiciones específicas (método GET/HEAD/POST, solo cabeceras seguras, Content-Type específico), que no necesita enviar preflight y envía la solicitud real directamente.
- Access-Control-Allow-Origin (ACAO)
- Cabecera de respuesta CORS principal, especifica el origen permitido para acceder al recurso, puede ser un URI de origen específico o comodín *, con credenciales no se puede usar *.
- Access-Control-Allow-Methods (ACAM)
- Cabecera de respuesta preflight, lista todos los métodos HTTP soportados por el servidor, múltiples métodos separados por coma.
- Access-Control-Allow-Headers (ACAH)
- Cabecera de respuesta preflight, lista todos los campos de cabecera de solicitud permitidos por el servidor; las cabeceras personalizadas enviadas por el frontend deben declararse aquí.
- Access-Control-Allow-Credentials (ACAC)
- Cabecera de respuesta, valor booleano true indica que se permite llevar credenciales como Cookie y Authorization en solicitudes cross-origin; en este caso Allow-Origin no puede ser *.
- Access-Control-Max-Age (ACMA)
- Cabecera de respuesta preflight, especifica el tiempo de caché del resultado preflight en segundos; una configuración razonable puede reducir solicitudes OPTIONS mejorando el rendimiento.
- Vary: Origin
- Cabecera de respuesta, le dice a CDN/proxy que el contenido de la respuesta varía según la cabecera Origin, al cachear debe incluir Origin como clave de caché para evitar desorden de caché de respuestas cross-origin.
- Cabeceras de solicitud de lista segura CORS (CORS-safelisted request headers)
- Cabeceras de solicitud que se pueden enviar sin necesidad de declararlas en Allow-Headers, incluyendo Accept, Accept-Language, Content-Language, Content-Type (valores específicos), etc.
- Nombres de cabecera prohibidos (Forbidden header name)
- Cabeceras de solicitud que el navegador prohíbe a JavaScript establecer mediante programación, como Host, Connection, Cookie, Origin, etc.; estas cabeceras son controladas automáticamente por el navegador.
- Solicitud con credenciales (Credentialed Request)
- Solicitud cross-origin que lleva credenciales de identidad como Cookie, información de autenticación HTTP, certificados cliente TLS; requiere que frontend y backend configuren conjuntamente withCredentials y Allow-Credentials.
- Access-Control-Expose-Headers
- Cabecera de respuesta, lista las cabeceras de respuesta a las que JavaScript puede acceder; por defecto solo unas pocas cabeceras básicas son accesibles, las cabeceras personalizadas deben declararse aquí.
- Método OPTIONS
- Uno de los métodos HTTP, usado para obtener las opciones de comunicación soportadas por el servidor; CORS lo usa para enviar solicitudes preflight, preguntando al servidor los métodos, cabeceras, credenciales permitidos.
- Cabecera de solicitud Origin
- Cabecera de solicitud añadida automáticamente por el navegador, indica de qué origen proviene la solicitud actual (protocolo+dominio+puerto); el servidor determina si permite cross-origin según esta cabecera.
- Atributo crossorigin
- Atributo de elementos HTML (como script, img, link), usado para especificar si se habilita la carga de recursos con CORS; los valores son anonymous (sin credenciales) y use-credentials (con credenciales).
- Modo de solicitud no-cors
- Un mode de la API fetch, que permite enviar solicitudes cross-origin pero solo puede enviar solicitudes simples y JavaScript no puede leer el contenido de la respuesta, equivalente a enviar una solicitud opaca (Opaque Response).