Wie kann ich die Behandlung aller in RFC 2616 definierten HTTP-Methoden auf dem Apache-Webserver aktivieren? Dies wären:
OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT
Ich benutze den Apache HTTP Server, Version 2.2.22 (Ubuntu)
Hier ist meine .htaccess
Datei:
<Location /output>
Dav On
<LimitExcept GET HEAD OPTIONS PUT>
Allow from all
</LimitExcept>
</Location>
Hier ist die Ausgabe, die ich vom Ausführen von Telnet bekomme - Es gibt keine PUT-Methode:
Escape character is '^]'.
OPTIONS / HTTP/1.0
HTTP/1.1 200 OK
Date: Tue, 09 Oct 2012 06:56:42 GMT
Server: Apache/2.2.22 (Ubuntu)
Allow: GET,HEAD,POST,OPTIONS
Vary: Accept-Encoding
Content-Length: 0
Connection: close
Content-Type: text/html
Connection closed by foreign host.
Irgendwelche Gedanken dazu?
/output
Standort, fragen jedoch nachOPTIONS
dem/
Standort. Methodenbeschränkungen gelten nicht für übergeordnete Standorte, sondern nur für tiefere Standorte.Antworten:
Apache implementiert alle relevanten HTTP-Methoden für statischen Inhalt (tatsächliche Dateien, die direkt von Apache bereitgestellt werden). Bei dynamischen Inhalten (CGI-Skripten
mod_php
usw.) ist es Apache egal, um welche HTTP-Methode es sich handelt (es sei denn, sie ist ausdrücklich auf eine<Limit>
Direktive beschränkt ), und die Anforderung wird unverändert an den entsprechenden Handler weitergeleitet. Ihr Skript muss die bestimmte Methode wie vorgesehen behandeln, nicht Apache. Selbst nicht standardisierte Methoden werden problemlos an dynamische Handler übergeben.Getestet mit einer ungültigen
ASDFG / HTTP/1.1
Anforderung, die von einemmod_php
Skript verarbeitet wurde. Keine Beschwerde von Apache, dieASDFG
im$_SERVER['REQUEST_METHOD']
Handler-Skript eingegangen ist .quelle
OPTIONS
Anfrage stoppen , es sei denn, Sie verbieten es ausdrücklich mit<Limit OPTIONS> deny from all </Limit>
oder einer ähnlichen Zugangskontrolle.Basierend auf http://httpd.apache.org/docs/current/mod/core.html können diese Methoden in den Konfigurationsdateien
directory
und.htaccess
mithilfe derLimit method [method] ... > ... </Limit>
Direktive geändert werdenGrundsätzlich müssen Sie kommentieren Sie Optionen wie die , die unterhalb derer verwendet , um die Methoden zu blockieren.
quelle
Wahrscheinlich verwenden Sie libapache2-mod-php5filter anstelle von libapache2-mod-php5.
Details: Apache2 und PHP5: Modul oder Filter
quelle
Der sichere Weg, dies zu beheben, besteht darin, herauszufinden, warum Apache die Anforderungen in Ihrem speziellen Fall ablehnt . Sie können dies aus Fehlerprotokollen lernen.
In meinem Fall
tail -f /usr/local/apache/logs/error_log
gab dies:Er erwähnt eine Sicherheitsregel und die Datei es herkommt:
/usr/local/apache/conf/modsec-imh/01_base_rules.conf
. Das Bearbeiten dieser Datei löste mein Problem.quelle
Das PHP-Dokument enthält einen Abschnitt mit Referenzen zu diesem http://php.net/manual/en/features.file-upload.put-method.php
Die Apache-Kerndokumentation für die Direktive finden Sie unter http://httpd.apache.org/docs/2.2/mod/mod_actions.html
quelle