服务器端可用的HTTP方法

时间:2017-08-19 21:07:13

标签: php http

可以从PHP脚本中了解服务器端的可用HTTP方法吗?

我知道我可以使用$ _SERVER [' REQUEST_METHOD']全局变量来了解当前请求的方法,但我不希望这样,如果没有,可以使用Apache HTTPD上的可用方法或Nginx服务器。

1 个答案:

答案 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调用,因此您可能不希望在每次加载页面时运行它,而只是偶尔运行它然后缓存结果。允许的方法不太可能经常改变。