0
它有可能通過PHP腳本知道服務器端的可用HTTP方法嗎?服務器端可用的HTTP方法
我知道我可以使用$ _SERVER ['REQUEST_METHOD']全局變量來知道當前請求的方法,但是我不希望這個,如果不是,Apache HTTPD或Nginx服務器上的可用方法。
它有可能通過PHP腳本知道服務器端的可用HTTP方法嗎?服務器端可用的HTTP方法
我知道我可以使用$ _SERVER ['REQUEST_METHOD']全局變量來知道當前請求的方法,但是我不希望這個,如果不是,Apache HTTPD或Nginx服務器上的可用方法。
沒有設置任何環境變量,或者任何與服務器無關的方式來確定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調用,因此您可能不希望在每次頁面加載時都運行它,而是偶爾進行緩存,然後緩存結果。允許的方法不可能經常改變。
你可以看看https://httpd.apache.org/docs/2.4/mod/mod_allowmethods.html。除非使用,否則它看起來不像是apache限制。 –