2017-08-19 64 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始終返回。所以你要仔細檢查一下。但是這應該會給你一個好主意。由於您在運行時進行了七次HTTP調用,因此您可能不希望在每次頁面加載時都運行它,而是偶爾進行緩存,然後緩存結果。允許的方法不可能經常改變。