Blockierte HTTP-Methoden geben keine HTTP 405-Antwort zurück

Jun 30 2020

Wie konfiguriere ich (idealerweise) Apache (oder alternativ) PHP so, dass es spezifisch mit einem HTTP 405 antwortet, wenn die Anforderungsmethode nicht GEToder nicht POST?

Mein Apache- .htaccessVersuch blockiert Anforderungen, außer dass die falsche HTTP 403- Antwort zurückgegeben wird:

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

In PHP habe ich am absoluten Anfang der Verarbeitung von Anforderungen Folgendes verwendet und es wird einfach vollständig ignoriert:

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

Antworten

Pandurang Jun 30 2020 at 07:32

Sie können die folgende Umleitungsregel verwenden, um die Methode zu deaktivieren und den 405-Fehlercode zurückzugeben.

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