可以从PHP脚本中了解服务器端的可用HTTP方法吗?
我知道我可以使用$ _SERVER [' REQUEST_METHOD']全局变量来了解当前请求的方法,但我不希望这样,如果没有,可以使用Apache HTTPD上的可用方法或Nginx服务器。
答案 0 :(得分: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调用,因此您可能不希望在每次加载页面时运行它,而只是偶尔运行它然后缓存结果。允许的方法不太可能经常改变。