2017-08-19 19 views
0

PHPスクリプトからサーバ側で利用可能なHTTPメソッドを知ることは可能でしょうか?サーバ側で利用可能なHTTPメソッド

$ _SERVER ['REQUEST_METHOD']グローバル変数を使って現在のリクエストのメソッドを知ることができますが、もしそうでなければ、Apache HTTPDまたはNginxサーバーで利用可能なメソッドを望んでいません。

+0

https://httpd.apache.org/docs/2.4/mod/mod_allowmethods.htmlをご覧ください。使用されていない限り、Apacheの制限のようには見えません。 –

答えて

0

設定されている環境変数はありません。または、PHPが認識している利用可能なリクエストメソッドを特定するためのサーバーに依存しない方法です。この判断を下すには、cURLを使用してPHPをクライアントとしてセットアップし、サーバーにさまざまな要求を行って許可されているかどうかを確認する必要があります。このような何か(未テスト):

$methods = array('GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS', 'CONNECT'); 

foreach ($methods as $method) { 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL, 'http://localhost'); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); 

    curl_exec($ch); 

    if (curl_errno($ch) == 405) { 
     echo "Method $method not allowed."; 
    } else { 
     echo "Method $method allowed."; 
    } 

    curl_close($ch); 
} 

具体的には、私が要求されたメソッドを許可しないサーバーに対して呼び出したときに405が一貫して返されていることを確認するために、これをテストしていません。だから、あなたはそれを再確認したいでしょう。しかし、これは良いアイデアを与えるはずです。これが実行されるときに7つのHTTPコールを作成しているので、すべてのページのロード時に実行したくない場合があります。許可されたメソッドが頻繁に変更されることはほとんどありません。

関連する問題