¿Qué es una solicitud de preflight? Explicación de las verificaciones CORS OPTIONS

¿Qué es una solicitud de preflight? Explicación de las verificaciones CORS OPTIONS

La API de raspado universal sin raspado recupera contenido web público permitido y puede renderizar JavaScript cuando se debe observar la solicitud de preflight en una respuesta real.

Resumen

  • La solicitud de preflight tiene un rol de protocolo preciso. Una solicitud de preflight es una verificación automática de CORS en la que un navegador envía una solicitud OPTIONS antes de ciertas solicitudes de origen cruzado.
  • La solicitud de preflight debe leerse en la capa correcta. El transporte, la representación, la política del navegador y la autorización de la aplicación siguen siendo preocupaciones separadas.
  • Los intermediarios pueden cambiar lo que una aplicación observa. Los gateways, cachés, configuraciones predeterminadas del navegador y bibliotecas del cliente pueden agregar procesamiento entre los bytes de origen y los datos analizados.
  • La validación necesita evidencia de contenido. Un estado o campo por sí solo no prueba que la representación pública esperada haya llegado.
  • La seguridad depende del alcance y la validación. La sintaxis del protocolo nunca otorga permiso para acceder a un recurso o confiar en un valor proporcionado por el llamador.

¿Qué es la solicitud de preflight?

Una solicitud de preflight es una verificación automática de CORS en la que un navegador envía una solicitud OPTIONS antes de ciertas solicitudes de origen cruzado. La preflight identifica el origen del llamador, el método previsto y los nombres de los campos de solicitud no aprobados. La respuesta del servidor le dice al navegador si puede enviar la solicitud real; la preflight no ejecuta esa operación de aplicación prevista.

La definición útil incluye tanto el mecanismo como su límite. La solicitud de preflight afecta una parte específica de un intercambio, mientras que las responsabilidades adyacentes permanecen con HTTP, el navegador, el transporte seleccionado, la aplicación o el modelo de datos del servidor. Mantener esas capas separadas hace que los informes de errores sean reproducibles y evita que un cambio de configuración se confunda con una decisión de control de acceso.

Para los desarrolladores de API, la primera pregunta es quién crea el valor o comportamiento. La siguiente pregunta es quién lo interpreta. La pregunta final es qué resultado observable prueba que la interpretación funcionó. Esas tres respuestas convierten un término del glosario en un contrato de interfaz verificable.

La verificación OPTIONS antes de la solicitud real

El navegador clasifica una búsqueda de origen cruzado según su método, campos controlados por el autor y tipo de contenido. Si la solicitud cae fuera de la forma aprobada por CORS, el navegador crea una solicitud OPTIONS a la URL de destino en lugar de enviar el método de la aplicación inmediatamente.

El origen identifica la página llamante. Access-Control-Request-Method nombra el método planificado, y Access-Control-Request-Headers enumera los nombres de los campos relevantes no aprobados. La solicitud de preflight no lleva el cuerpo de la solicitud real, y las reglas normales de Fetch dicen que las solicitudes de preflight CORS excluyen credenciales.

El servidor o gateway devuelve Access-Control-Allow-Origin más permisos de método y campo que cubren el intercambio planificado. También puede devolver Access-Control-Max-Age para que el navegador pueda almacenar en caché un resultado exitoso de preflight dentro de los límites de implementación.

Sólo después de que la política coincide, el navegador envía la solicitud real. Esa segunda respuesta también debe llevar el permiso CORS apropiado. Pasar OPTIONS pero omitir campos en la respuesta real aún produce un fallo visible para el navegador.

Leyendo un par de preflight

Los siguientes términos separan los componentes que a menudo se colapsan en una sola etiqueta. Léelos como interfaces entre participantes en lugar de como decoración en un trazo de red.

OPTIONS

El método HTTP utilizado para la verificación de la política, no el método comercial que la página desea invocar.

Origen

El origen de la página que solicita acceso de origen cruzado.

Access-Control-Request-Method

El método real planificado para la solicitud posterior.

Access-Control-Request-Headers

Los nombres de los campos de solicitud del autor no aprobados planificados para la solicitud posterior.

Access-Control-Allow-Methods

Los métodos que el servidor aprueba para ese origen y contexto de recurso.

Access-Control-Max-Age

Una duración para almacenar en caché el permiso exitoso de preflight, sujeto a límites del navegador y reglas de caché.

Por qué importa la solicitud de preflight en la recopilación de datos web

La solicitud de preflight puede cambiar qué bytes llegan, cómo se interpretan esos bytes, o si el código del navegador puede observar el resultado. Un flujo de trabajo de recopilación debe localizar ese efecto antes de cambiar herramientas. Registre la URL solicitada, la URL final, el estado de la respuesta, el tipo de representación, los campos de protocolo relevantes y un marcador de contenido esperado. Ese registro compacto distingue una página correcta de un mensaje de acceso, pantalla de consentimiento, objetivo de redirección, shell de aplicación vacío o codificación incompatible.

HTTP directo es el camino de adquisición más simple cuando los datos requeridos existen en una respuesta renderizada por un servidor abierto. Un navegador se vuelve relevante cuando el contenido aprobado depende de la ejecución de JavaScript, el estado gestionado por el navegador, la navegación o la política de seguridad del navegador. Los dos caminos no deben forzarse a parecer idénticos: los navegadores gestionan cookies, compresión, redirecciones, CORS y almacenamiento de acuerdo con las reglas de la plataforma, mientras que un cliente directo expone un conjunto diferente de valores predeterminados.

La continuidad de la sesión importa siempre que una respuesta establezca un estado para la siguiente solicitud. Mantenga una secuencia autorizada dentro de un contexto de cliente limitado, preserve la localidad y el origen de red requeridos, y evite mezclar el estado de trabajos no relacionados. Un proxy cambia el origen de red; no reproduce encabezados, decodifica representaciones, ejecuta scripts o otorga acceso a contenido restringido.

El análisis comienza solo después de la validación de la representación. Confirme el host final, la identidad canónica donde esté disponible, el tipo de medio, el estado de decodificación y el marcador comercial requerido antes de extraer campos. Este orden evita que un analizador convierta un documento de error en registros vacíos que parecen técnicamente exitosos.

Los intermediarios merecen atención explícita. Una red de entrega de contenido puede seleccionar una variante codificada, una puerta de enlace puede responder con OPTIONS, una caché puede reutilizar una respuesta negociada y un servidor de aplicaciones puede establecer cookies o campos de autorización.

Scrapeless Universal Scraping API es relevante cuando un equipo necesita la recuperación gestionada de contenido público permitido, incluyendo páginas renderizadas con JavaScript. El contrato de adquisición aún debe definir el objetivo, los campos permitidos, la representación esperada, el marcador de aceptación y las condiciones de parada.

Solicitudes que comúnmente activan pre-vuelo

La solicitud de pre-vuelo gana un lugar en una arquitectura cuando cambia un comportamiento de producto concreto, un requisito de compatibilidad o una decisión de diagnóstico. Estos casos de uso describen el trabajo primero y la característica del protocolo en segundo lugar.

Escritura de JSON

Un POST de origen cruzado utilizando application/json normalmente cae fuera de la forma de solicitud permitida.

Campo de autorización personalizado

Los campos controlados por el autor fuera de la lista segura hacen que el navegador pida permiso primero.

PUT o DELETE

Los métodos fuera del conjunto permitido comúnmente requieren una verificación OPTIONS.

Campo de seguimiento personalizado

Un campo de id de solicitud agregado por la página puede cambiar una solicitud directa en un intercambio pre-vuelo.

API de carga

El método elegido y el tipo de medio determinan si ocurre una verificación de política separada.

Consola multi-origen

Un frontend administrativo en un origen puede pre-vuelo las llamadas a un origen de API distinto.

Solicitudes pre-vuelo y CORS en lista segura

La solicitud de pre-vuelo pertenece a una capa de HTTP y no debe confundirse con capas adyacentes. Una implementación sólida identifica qué componente selecciona el valor, qué componente puede cambiarlo y qué evidencia prueba que la representación final es correcta.

DimensiónSolicitud de pre-vueloConcepto relacionado o alternativo
MétodoPuede incluir PUT, DELETE u otros métodosGET, HEAD o POST dentro de las reglas de la lista segura
Campos de autorIncluye un campo no seguroSolo campos de autor en lista segura
Tipo de contenidoA menudo application/json u otro tipo no seguroTipo de medio en lista segura con restricciones de parámetros
Paso del navegadorLa verificación OPTIONS precede a la solicitud realLa solicitud real puede ser enviada directamente
Seguridad del servidorLa autenticación y autorización aún son requeridasLa autenticación y autorización aún son requeridas

Una comparación es útil solo si preserva los límites de capa. Dos mecanismos pueden coexistir en una solicitud y reemplazar uno no reemplaza automáticamente el otro. Documente el comportamiento seleccionado en términos de entradas, salida observable, estado de falla y propiedad.

Por qué el manejo de pre-vuelo falla

  • Enrutamiento de OPTIONS a ningún controlador. Las puertas de enlace y los frameworks pueden devolver un error genérico antes de que se ejecute la lógica CORS de la aplicación.
  • Permitindo el método pero no el campo. El método planeado y cada campo solicitado que no esté en la lista segura deben estar cubiertos.
  • Requerir credenciales ordinarias en OPTIONS. El comportamiento de pre-vuelo Fetch no incluye credenciales de solicitud normales.
  • Olvidando la respuesta real. Tanto la verificación de permisos como la respuesta posterior necesitan la política de origen aplicable.
  • Depuración solo de registros de aplicaciones del servidor. Un CDN, proxy o servidor web puede responder OPTIONS antes de que la aplicación lo vea.
  • Deshabilitar un campo de solicitud necesario. Eliminar campos de seguridad o contenido para evitar preflight puede dañar el contrato API.

La mayoría de las fallas se vuelven más fáciles de diagnosticar después de eliminar suposiciones sobre lo que una biblioteca o navegador hizo automáticamente. Captura un trazo mínimo, redacta secretos y cambia una variable controlada a la vez. El objetivo es una explicación estable de la representación devuelta, no una colección de ajustes de encabezado no relacionados.

Una lista de verificación de fallos de preflight

Esta secuencia funciona como una revisión de diseño antes del lanzamiento y como un diagnóstico de producción después de cambios en el comportamiento. Mantiene la evidencia del protocolo conectada al resultado de la aplicación.

  1. Identifica el origen de la página, el origen objetivo, el método planeado, el tipo de contenido y los campos controlados por el autor.
  2. Abre el intercambio OPTIONS y lee sus campos de estado y respuesta sin asumir que la aplicación lo manejó.
  3. Haz coincidir Access-Control-Allow-Origin con el origen de la solicitud bajo las reglas de credenciales.
  4. Confirma que Access-Control-Allow-Methods incluye el método planeado.
  5. Confirma que Access-Control-Allow-Headers cubre todos los nombres de campo no seguros solicitados.
  6. Verifica redirecciones, proxies y manejadores de errores para respuestas que omiten campos CORS.
  7. Después de que OPTIONS pase, inspecciona la solicitud y respuesta reales como un intercambio separado.

Termina la revisión guardando una pequeña muestra aceptada y una muestra rechazada con las mismas reglas de redacción. Los cambios futuros pueden compararse entonces contra la identidad de página conocida, campos esperados y contenido decodificado en lugar de la memoria o capturas de pantalla solas.

Seguridad y Observabilidad para la Solicitud Preflight

La Solicitud Preflight participa en un camino de solicitud que puede cruzar navegadores, puertas de enlace, cachés y servidores de origen. Cada salto debe aceptar solo los valores que comprende, preservar los campos que deben sobrevivir y evitar copiar credenciales o datos personales en los registros. La sintaxis del protocolo no es autorización.

Los registros operacionales deben capturar la URL solicitada, la URL final, el estado, el tipo de representación, los nombres de campo relevantes y un marcador de contenido limitado. Los cuerpos completos y los valores de credenciales rara vez son necesarios para un diagnóstico rutinario y pueden crear un riesgo de retención innecesario.

El comportamiento del navegador y el comportamiento HTTP directo son superficies de prueba diferentes. CORS, almacenamiento de cookies, descompresión automática y manejo de redirecciones pueden ser realizados por el navegador o la biblioteca antes de que el código de la aplicación vea un resultado. Registra el cliente y sus valores predeterminados al comparar capturas.

Normas que Definen la Solicitud Preflight

el algoritmo de preflight del Estándar Fetch define la verificación de política del navegador. Esta fuente principal fija el vocabulario y el límite usado en este artículo, mientras que el comportamiento de implementación aún necesita ser observado en el cliente y despliegue seleccionados.

glosario de solicitudes de preflight de MDN muestra los campos de la solicitud OPTIONS. Esta fuente principal fija el vocabulario y el límite usado en este artículo, mientras que el comportamiento de implementación aún necesita ser observado en el cliente y despliegue seleccionados.

guía CORS de MDN explica preflight y las restricciones de credenciales. Esta fuente principal fija el vocabulario y el límite usado en este artículo, mientras que el comportamiento de implementación aún necesita ser observado en el cliente y despliegue seleccionados.

la semántica HTTP OPTIONS define el método HTTP subyacente. Esta fuente principal fija el vocabulario y el límite usado en este artículo, mientras que el comportamiento de implementación aún necesita ser observado en el cliente y despliegue seleccionados.

La Regla de Depuración Preflight

Trata el preflight y la solicitud real como dos intercambios HTTP separados y verifica el origen, método, campo, credencial, puerta de enlace y comportamiento de respuesta final en la capa que produjo cada respuesta.

Pone esa regla en una prueba de aceptación. Indica qué participante envía la señal, qué participante la interpreta, qué intermediarios pueden alterar el camino y qué marcador de contenido demuestra el éxito. Esto hace que la Solicitud Preflight sea parte de un sistema observable en lugar de una etiqueta adjunta después de una falla.

¿Listo para Validar una Respuesta Web Pública?

Usa Scrapeless Universal Scraping API para recuperar contenido público aprobado y verificar el contrato de representación descrito en esta guía.

Regístrate hoy y obtén $5 de crédito gratissin tarjeta de crédito requerida.

Reclama tu crédito de $5 →

FAQ

¿Los desarrolladores envían solicitudes preflight manualmente?

Normalmente no. El navegador crea y envía automáticamente un preflight CORS cuando la solicitud de origen cruzado planificada requiere uno. Las llamadas OPTIONS manuales son útiles solo para diagnóstico y no reproducen cada decisión del navegador.

¿Es una solicitud de preflight lo mismo que la solicitud API real?

No. El preflight es una verificación de permisos OPTIONS. El método y cuerpo reales se envían solo después de que el navegador acepta la respuesta de política.

¿Por qué aplica application/json un preflight?

Una solicitud de origen cruzado autorizada por la página utilizando application/json no se ajusta a la forma de tipo de contenido segura CORS, por lo que el navegador comúnmente verifica permisos antes de enviarla.

¿Pueden los resultados del preflight ser almacenados en caché?

Sí. Una respuesta exitosa puede incluir Access-Control-Max-Age, y el navegador puede almacenar en caché ese permiso dentro de sus propios límites. La caché es separada de la caché de respuesta HTTP ordinaria.

¿Debería un endpoint OPTIONS requerir inicio de sesión?

Un preflight CORS no incluye credenciales de solicitud normales bajo las reglas Fetch. El endpoint debe responder a la verificación de política mientras que la operación real aún aplica autenticación y autorización.

Referencias