2009-09-09 1 views
16

Sto cercando di implementare un protocollo REST e mi sono reso conto nel tentativo di eseguire il debug che il mio server Web non consente la richiesta PUT.Perché il software del mio server Web non consente le richieste PUT e DELETE?

Ho testato e confermato ulteriormente eseguendo:

curl -X PUT http://www.mywebserver.com/testpage 

Che per il mio server web restituisce un 403 - Errore Forbidden.

Lo stesso accade per DELETE, dove come per POST e GET tutto va bene.

Mi chiedo se questo è un problema comune a coloro che utilizzano REST e quali potrebbero essere le soluzioni alternative?

Posso apportare una semplice modifica a un file .htaccess? O devo modificare il protocollo per impostare una variabile nascosta "_method" nella stringa di query del POST?

risposta

54

Spesso i server web saranno configurati per bloccare nulla, tranne GET e POST dal il 99% del tempo sono tutti che sono necessari e ci sono stati problemi in passato con applicazioni assumendo le richieste erano uno di quei due .

Tu non dici quale server è, ma, per esempio, si può dire che Apache metodi per consentire alla direttiva:

esempio:

<Limit POST PUT DELETE> 
    Require valid-user 
</Limit> 

suona come forse qualche utile sysadmin ha usato questo per bloccare non GET/POST

si potrebbe provare un .htaccess con

<Limit GET POST PUT DELETE> 
    Allow from all 
</Limit> 

(Non sono un esperto di apache, questo potrebbe non essere esattamente corretto)

+0

Aggiungo che questo funziona anche se non riesci a trovare * dove * quei metodi sono disabilitati. - ahem, l'ho appena trovato, in Debian è in userdir.conf. – bigstones

+0

dove dovrei inserire il file '.htaccess'? –