ブロックされたHTTPメソッドがHTTP405応答を返さない
どのように私は、configure(理想的には)(あるいは)のApache、PHPが応答するか、具体的にHTTP 405リクエストメソッドがないときGET
かPOST
?
私の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
以下のリダイレクトルールを使用して、メソッドを無効にし、405エラーコードを返すことができます。
RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^(POST|GET)$
RewriteRule .* - [R=405]