ブロックされたHTTPメソッドがHTTP405応答を返さない

Jun 30 2020

どのように私は、configure(理想的には)(あるいは)のApache、PHPが応答するか、具体的HTTP 405リクエストメソッドがないときGETPOST

私のApacheの.htaccess試みは、誤ったHTTP 403応答を返すことを除いて、リクエストをブロックします。

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

PHPでは、リクエストが処理される場所の絶対的な開始時に以下を使用しましたが、完全に無視されます。

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

回答

Pandurang Jun 30 2020 at 07:32

以下のリダイレクトルールを使用して、メソッドを無効にし、405エラーコードを返すことができます。

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