2010-07-10 12 views
10

¿Hay algún dato sobre cómo los navegadores realmente admiten los verbos http de resto (especialmente PUT, ELIMINAR). Esta pregunta está motivada principalmente por el hecho de que muchas fuentes (como esta stackoverflow answer) informan que la mayoría de los navegadores no soportan PUT y DELETE, pero no dicen cuál.Resto de granulado fino Verbos HTTP compatibilidad con el navegador

Rails resuelve esto usando un parche en el cliente y revirtiendo el parche en el servidor, pero me pregunto, por ejemplo, qué navegadores no necesitarían tal pirateo.

+0

¿Qué tiene esto que ver con los navegadores? –

+1

Jonh: Varios de ellos no pueden realizar consultas PUT DELETE. Esto es principalmente importante en las consultas ajax, ya que las buenas formas antiguas no pueden hacer esto por especificación. Además, en los servicios web de descanso, la semántica detrás de PUT y DELETE importa. –

Respuesta

5

En caso de duda, ask Anne:

http://annevankesteren.nl/2007/10/http-method-support

Es un par de años, pero le da un certificado de buena salud a PUT y DELETE, sino que también trata de diferentes casos de verbos más oscuros como TRACE y PROPFIND:

Van Kesteren probó Firefox 3, Opera 9.5 e Internet Explorer 7, una mezcla de prelanzamiento y lanzamientos. GET y POST funcionaron como se esperaba, y todos respaldaron el conjunto estándar de métodos http de RFC 2616. Hay algunos problemas de la carcasa, por lo que debe intentar mantenerse siempre en mayúscula; TRACE y OPTIONS son casos extremos con problemas encontrados en Firefox y Opera, respectivamente. CONNECT y TRACE y SEARCH son problemáticos para IE. Tenga en cuenta que esto fue escrito en 2007 por lo que YMMV.

Creo que toda la confusión sobre los navegadores que no soportan que no sea GET y POST se deriva del hecho de que la especificación HTML enumera única estos dos en la HTML <form> element:

El atributo del método de los elementos de formulario especifica el método HTTP utilizado para enviar el formulario al agente de procesamiento. Este atributo puede tomar dos valores:

  • get: Con el HTTP "get" método, el conjunto de formularios de datos se añade a la URI especificada por el atributo de acción (con un signo de interrogación() como "?" separador) y este nuevo URI se envía al agente de procesamiento.

  • post: Con el método HTTP "post", el conjunto de datos del formulario se incluye en el cuerpo del formulario y se envía al agente de procesamiento.

Ésta es la razón por la cual los navegadores GET y POST único soporte de forma nativa en HTML; ya que el estándar lo dice.

La corriente (enero de 2014) XMLHttpRequest specification en los otros estados de la mano explícitamente que los métodos de petición debe permitirse a través con algunas excepciones (CONNECT, vestigios o pista), y que los métodos RFC2616 deben uppercased:

\ 6. Si el método es una coincidencia insensible a mayúsculas y minúsculas para CONNECT, DELETE, GET, HEAD, OPTIONS, POST, PUT, TRACE o TRACK, reste 0x20 de cada byte en el rango 0x61 (ASCII a) a 0x7A (ASCII z).

Si no coincide con ninguno de los anteriores, se transmite literalmente, incluso en la solicitud final.

EDITAR Otra fuente que ha llegado a más o menos la misma conclusión: que XMLHttpRequest apoya PUT y DELETE: http://jshirley.vox.com/library/post/xmlhttprequest-and-rest.html (advertencia, enlace roto partir de mayo de 2014).

EDIT Por supuesto, la pregunta ha sido asked before, pero las respuestas de dos años siguen siendo válidas.

EDITAR Breve resumen de la página de Anne van Kesteren partir de 2007, y la sección añadida en HTML vs XMLHttpRequest

+2

Sí, es viejo. Pero luego, supongo que es tristemente, lo mejor que tenemos, sin crowdsourcing de personas en http://www.mnot.net/javascript/xmlhttprequest/ –

+1

El enlace de Anne Van Kesteren está muerto. Cuando responda con fuentes de otros sitios, debe transcribirlas aquí para evitar perder la información cuando los enlaces se agoten. :( –

+0

En principio, tengo que estar de acuerdo. En mi defensa las fuentes ya tenían tres años cuando las cité y probé las versiones actuales de los navegadores. Ahora tienen 7 años. Encontré que el enlace AVK funcionaba bien , pero jshirley por el contrario me dio una mirada en blanco. Veré lo que puedo hacer. – mogsie

-1

Consulte la página PutDeleteSupport del Atom Wiki. Es posible que le interese explorar otras páginas de Atom Wiki relacionadas con HTTP.

+0

Gracias, pero este solo muestra el soporte en clientes de idiomas. Estoy buscando la compatibilidad con clientes de navegador, como chorme, firefox, es decir, opera, mini de ópera, y así sucesivamente. –

Cuestiones relacionadas