2017-08-19 2 views
0

Es ist möglich, verfügbare HTTP-Methoden auf Serverseite von PHP-Skript zu kennen?Serverseitig verfügbare HTTP-Methoden

Ich weiß, ich kann $ _SERVER ['REQUEST_METHOD'] globale Variable verwenden, um Methode für die aktuelle Anfrage zu kennen, aber ich will dies nicht, wenn nicht, die verfügbaren Methoden auf Apache HTTPD oder Nginx-Servern.

+0

Sie können sich https://httpd.apache.org/docs/2.4/mod/mod_allowmethods.html ansehen. Wenn es nicht verwendet wird, sieht es überhaupt nicht wie Apache-Grenzen aus. –

Antwort

0

Es gibt keine Umgebungsvariable oder irgendeine serverunabhängige Methode, um die verfügbaren Anforderungsmethoden zu ermitteln, die PHP kennen würde. Um diese Entscheidung treffen zu können, müssten Sie PHP als Client einrichten, indem Sie cURL verwenden, um verschiedene Anfragen an den Server zu stellen, um zu sehen, ob sie erlaubt sind. So etwas wie dieses (nicht getestet):

$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); 
} 

Insbesondere habe ich diese, um sicherzustellen, nicht getestet, dass 405 konsequent zurückgeführt wird, wenn auf einem Server aufrufen, die nicht die angeforderte Methode nicht gestattet. Du solltest das also überprüfen. Aber das sollte dir eine gute Idee geben. Da Sie sieben HTTP-Aufrufe ausführen, wenn diese ausgeführt wird, möchten Sie sie möglicherweise nicht bei jedem Laden der Seite ausführen, sondern nur gelegentlich und dann die Ergebnisse zwischenspeichern. Es ist unwahrscheinlich, dass sich die zulässigen Methoden häufig ändern.