Hay circunstancias en las que un servidor HTTP devolverá una lista de métodos compatibles para un recurso determinado en su Allow
response header , según RFC 7231 (el new RFC para HTTP 1.1 semántica):
- Primero en la respuesta a una
OPTIONS
request , ya sea en una ruta de recursos específica , o en la ruta especial *
(que describiría principalmente las capacidades del servidor);
- En segundo lugar, si se intenta un método conocido, pero no admitido por el servidor en un recurso determinado, el servidor puede responder con un 405 Código de estado del método no permitido ; en ese caso, debe proporcionar la lista de métodos permitidos en
Allow
encabezado de respuesta ;
- Para cualquier otra solicitud HTTP, el servidor de origen puede devolver una lista de métodos compatibles en
Allow
response header ;
¿Pero qué pasa si el servidor no coopera? P.ej. ¿Ha probado una solicitud OPTIONS *
, varias solicitudes GET
y el servidor nunca devuelve una lista de métodos permitidos en un encabezado Allow
? O ¿qué sucede si el servidor responde, pero sospecha que está mintiendo?
Entonces no lo sabes, y tendrás que vivir con ello. Lo que harás dependerá de tu objetivo:
- Si simplemente está tratando de usar el sistema de destino, debe actuar con cautela al asumir que solo se admite
GET
, y obtienen más documentación sobre cómo usar el sistema;
- Si está realizando pruebas de penetración, puede probar todos los verbos conocidos, probar algunos menos conocidos (como
PATCH
) o incluso inventa algunos de los tuyos; más generalmente, parte de la prueba sería arrojar basura al sistema para ver cómo reacciona;
Sin embargo, piense en por qué desea conocer la lista de verbos compatibles, ya que sin datos adicionales, saber qué verbos se usan es casi inútil (por ejemplo, sé que https://accounts.google.com/AddSession
acepta el POST
verb: ¿de qué me sirve saber el verbo si no sé en qué datos debería haber, en qué formato, etc.?