Http Options
http options
El método HTTP OPTIONS
El método HTTP OPTIONS se utiliza para conocer las opciones de comunicación disponibles para un recurso específico o para el servidor completo. Este método no solicita datos del recurso, sino información sobre qué métodos HTTP y configuraciones están permitidos.
¿Qué es el método OPTIONS?
OPTIONS es un método seguro (no modifica recursos) e idempotente (llamarlo múltiples veces produce el mismo resultado). Permite que un cliente descubra:
- Qué métodos HTTP puede usar en una URL.
- Qué cabeceras están permitidas.
- Si se permite realizar solicitudes desde otros orígenes (CORS).
- Si el servidor completo admite ciertas operaciones (cuando se usa ).
Características principales
| Propiedad | Valor |
|---|---|
| Tiene cuerpo en la petición | Puede tenerlo*, pero no tiene semántica definida |
| Tiene cuerpo en la respuesta | Puede |
| Seguro | Sí |
| Idempotente | Sí |
| Cacheable | No |
| Permitido en formularios HTML | No |
- Se puede enviar un cuerpo, pero solo si el servidor lo acepta explícitamente.
¿Para qué se usa OPTIONS?
1. Identificar métodos HTTP permitidos
Al hacer una petición OPTIONS sobre un recurso, el servidor responde con el encabezado Allow indicando los métodos válidos. Por ejemplo:
Allow: OPTIONS, GET, HEAD, POST
Esto es útil para:
- Exploración de APIs.
- Desarrollo.
- Validación de reglas de acceso.
2. Soporte para CORS (Cross-Origin Resource Sharing)
Cuando un navegador necesita verificar si puede realizar una petición compleja (por ejemplo, POST con cabeceras especiales), envía una preflight request usando OPTIONS.
En ella se indican:
- Método que se usará:
Access-Control-Request-Method - Cabeceras que se enviarán:
Access-Control-Request-Headers
El servidor responde indicando qué está permitido:
Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-HeadersAccess-Control-Max-Age
Esto determina si el navegador puede continuar con la petición real.
Sintaxis del método OPTIONS
OPTIONS *|<request-target>["?"<query>] HTTP/1.1
Formas del objetivo:
- → Solicita opciones del servidor completo.
<request-target>→ Normalmente una ruta, por ejemplo/api/usuarios.?<query>→ Parámetros opcionales.
Ejemplo: Consultar métodos permitidos
Comando:
curl -X OPTIONS https://example.org -i
Respuesta típica:
HTTP/1.1 204 No Content
Allow: OPTIONS, GET, HEAD, POST
Ejemplo: Preflight CORS
Petición del navegador
OPTIONS /resources/post-here/ HTTP/1.1
Origin: https://foo.example
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type,x-pingother
Respuesta del servidor
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
Access-Control-Max-Age: 86400
Esto indica que el navegador tiene permiso para hacer la petición real.
Resumen
- OPTIONS permite obtener información sobre qué métodos y cabeceras acepta un recurso.
- Es fundamental para el funcionamiento de CORS.
- Es seguro e idempotente.
- Permite consultar capacidades del servidor completo mediante .
- Los servidores responden con el encabezado Allow.
El método OPTIONS es esencial para el desarrollo moderno de APIs y la seguridad entre orígenes.
Si deseas, puedo ampliarlo con diagramas de flujo, ejercicios, ejemplos en Spring Boot o compararlo con otros métodos HTTP.