Los métodos HTTP bloqueados no devuelven la respuesta HTTP 405

Jun 30 2020

¿Cómo configuro (idealmente) Apache (o alternativamente) PHP para responder específicamente con un HTTP 405 cuando el método de solicitud no es GETo POST?

Mi .htaccessintento de Apache bloquea las solicitudes, excepto que devuelve la respuesta HTTP 403 incorrecta :

<LimitExcept GET POST>
Order Allow,Deny
Deny from all
</LimitExcept>

En PHP, he usado lo siguiente al principio absoluto de dónde se manejan las solicitudes y simplemente se ignora por completo:

if (!in_array($_SERVER['REQUEST_METHOD'],array('GET','POST')))
{
 header('Access-Control-Allow-Methods: GET, POST');
 header('HTTP/1.1 405');
 die();
}

Respuestas

Pandurang Jun 30 2020 at 07:32

Puede usar la siguiente regla de redireccionamiento para deshabilitar el método y devolver el código de error 405.

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^(POST|GET)$
RewriteRule .* - [R=405]