Bagaimana saya bisa mengaktifkan penanganan semua metode HTTP sebagaimana didefinisikan dalam RFC 2616 di server web Apache? Ini akan menjadi:
OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT
Saya menggunakan Apache HTTP Server, versi 2.2.22 (Ubuntu)
Ini .htaccess
File saya :
<Location /output>
Dav On
<LimitExcept GET HEAD OPTIONS PUT>
Allow from all
</LimitExcept>
</Location>
Ini adalah output yang saya dapatkan dari menjalankan Telnet - Tidak ada metode 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.
Ada pemikiran tentang ini?
/output
lokasi, tetapi Anda memintaOPTIONS
di/
lokasi. Batas metode tidak berlaku untuk lokasi induk, hanya untuk lokasi yang lebih dalam.Jawaban:
Apache mengimplementasikan semua metode HTTP yang relevan untuk konten statis (file aktual disajikan langsung oleh Apache). Untuk konten dinamis (skrip CGI,
mod_php
,, dll), Apache tidak peduli apa metode HTTP itu (kecuali jika secara eksplisit dibatasi dengan<Limit>
arahan ), dan meneruskan permintaan ke penangan yang sesuai sebagaimana adanya. Script Anda perlu menangani metode spesifik sebagaimana dimaksud, bukan Apache. Bahkan metode non-standar diteruskan ke penangan dinamis tanpa masalah.Diuji dengan
ASDFG / HTTP/1.1
permintaan yang tidak valid yang ditangani olehmod_php
skrip. Tidak ada keluhan dari Apache, diterimaASDFG
di$_SERVER['REQUEST_METHOD']
skrip handler.sumber
OPTIONS
permintaan, kecuali jika Anda secara tegas melarangnya dengan<Limit OPTIONS> deny from all </Limit>
atau kontrol akses yang serupa.berdasarkan http://httpd.apache.org/docs/current/mod/core.html , metode ini dapat dimodifikasi dalam
directory
dan.htaccess
konfigurasi file menggunakanLimit method [method] ... > ... </Limit>
arahanPada dasarnya Anda harus mengomentari opsi seperti yang di bawah ini yang digunakan untuk memblokir metode.
sumber
Mungkin Anda menggunakan libapache2-mod-php5filter alih-alih libapache2-mod-php5.
Detail: apache2 dan php5: module atau filter
sumber
Cara pasti untuk memperbaikinya adalah untuk mengetahui mengapa Apache menolak permintaan dalam kasus khusus Anda . Anda dapat mempelajari ini dari log kesalahan.
Dalam kasus saya,
tail -f /usr/local/apache/logs/error_log
berikan ini:Ia menyebutkan aturan keamanan dan file itu berasal dari:
/usr/local/apache/conf/modsec-imh/01_base_rules.conf
. Mengedit file itu memecahkan masalah saya.sumber
Dokumen PHP memiliki bagian referensi untuk http://php.net/manual/en/features.file-upload.put-method.php ini
Dokumentasi inti apache untuk arahan ada di http://httpd.apache.org/docs/2.2/mod/mod_actions.html
sumber