2009-09-09 25 views
16

Estoy tratando de implementar un protocolo REST y me he dado cuenta al intentar depurar que mi servidor web está rechazando la solicitud PUT.¿Por qué mi software de servidor web no permite solicitudes PUT y DELETE?

he probado y confirmado aún más mediante la ejecución:

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

Lo que para mi servidor web devuelve una 403 - Forbidden error.

Lo mismo ocurre con DELETE, donde como para POST y GET todo está bien.

Me pregunto si esto es un problema común que los que usan el REST se encuentran y cuál es el trabajo alternativo?

¿Podría hacer un simple cambio en un archivo .htaccess? ¿O necesito modificar el protocolo para establecer una variable oculta "_method" en la cadena de consulta POST?

Respuesta

54

A menudo, los servidores web se pueden configurar para bloquear cualquier cosa excepto GET y POST desde 99% del tiempo que están todos los que son necesarios y no ha habido problemas en el pasado con las aplicaciones asumiendo las solicitudes fueron uno de los dos .

Usted no dice qué servidor no es más que, por ejemplo, puede indicar a Apache, que métodos para permitir a la directiva:

por ejemplo:

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

suena como tal vez algunos útiles administrador de sistemas ha utilizado esto para bloquear no GET/POST

usted podría intentar un .htaccess con

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

(No soy un experto en apache, esto puede no ser exactamente correcto)

+0

Añadiré que esto funciona incluso si no parece encontrar * dónde * esos métodos están deshabilitados. - ejem, acaba de encontrarlo, en Debian está en userdir.conf. – bigstones

+0

¿dónde debería poner el archivo '.htaccess'? –

Cuestiones relacionadas