Comment puis-je activer la gestion de toutes les méthodes HTTP telles que définies dans RFC 2616 sur le serveur Web Apache? Ce seraient:
OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT
J'utilise Apache HTTP Server, version 2.2.22 (Ubuntu)
Voici mon .htaccess
fichier:
<Location /output>
Dav On
<LimitExcept GET HEAD OPTIONS PUT>
Allow from all
</LimitExcept>
</Location>
Voici la sortie que j'obtiens en exécutant Telnet - Il n'y a pas de méthode PUT:
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.
Des réflexions à ce sujet?
/output
emplacement, mais vous demandezOPTIONS
sur l'/
emplacement. Les limites de méthode ne s'appliquent pas aux emplacements parents, uniquement aux emplacements plus profonds.Réponses:
Apache implémente toutes les méthodes HTTP pertinentes pour le contenu statique (fichiers réels servis directement par Apache). Pour le contenu dynamique (scripts CGI
mod_php
, etc.), Apache ne se soucie pas de la méthode HTTP (sauf si elle est explicitement restreinte par une<Limit>
directive ) et transmet la demande au gestionnaire approprié en l'état. Votre script doit gérer la méthode spécifique comme prévu, pas Apache. Même les méthodes non standard sont transmises aux gestionnaires dynamiques sans problème.Testé avec une
ASDFG / HTTP/1.1
requête non valide gérée par unmod_php
script. Aucune plainte d'Apache, a reçuASDFG
dans$_SERVER['REQUEST_METHOD']
dans le script de gestionnaire.la source
OPTIONS
demande, sauf si vous l'interdisez explicitement avec<Limit OPTIONS> deny from all </Limit>
ou un contrôle d'accès similaire.basé sur http://httpd.apache.org/docs/current/mod/core.html , ces méthodes peuvent être modifiées dans les fichiers de configuration
directory
et.htaccess
à l'aide de laLimit method [method] ... > ... </Limit>
directiveFondamentalement, vous devez commenter les options comme celles ci-dessous qui sont utilisées pour bloquer les méthodes.
la source
Vous utilisez probablement libapache2-mod-php5filter au lieu de libapache2-mod-php5.
Détails: apache2 et php5: module ou filtre
la source
Le moyen sûr de résoudre ce problème consiste à savoir pourquoi Apache refuse les demandes dans votre cas particulier . Vous pouvez l'apprendre à partir des journaux d'erreurs.
Dans mon cas, a
tail -f /usr/local/apache/logs/error_log
donné ceci:Il mentionne une règle de sécurité et le fichier il vient de:
/usr/local/apache/conf/modsec-imh/01_base_rules.conf
. La modification de ce fichier a résolu mon problème.la source
Le document PHP a une section de références pour ce http://php.net/manual/en/features.file-upload.put-method.php
La documentation de base apache pour la directive se trouve à http://httpd.apache.org/docs/2.2/mod/mod_actions.html
la source