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
Idempotente
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-Origin
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Headers
  • Access-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.