2011-12-11 23 views

Respuesta

29

HTTP Upgrade se utiliza para indicar una preferencia o requisito para cambiar a una versión diferente de HTTP o a otro protocolo, si es posible:

El-header General Upgrade permite al cliente especificar qué protocolos de comunicación adicionales es compatible y le gustaría usar si el servidor considera apropiado cambiar los protocolos. El servidor DEBE usar el campo de encabezado Actualizar dentro de una respuesta 101 (Protocolos de conmutación) para indicar qué protocolo (s) se están conmutando.

Upgrade  = "Upgrade" ":" 1#product 

Por ejemplo,

Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 

El campo de cabecera de actualización está destinada a proporcionar un mecanismo simple para la transición de HTTP/1.1 a algún otro protocolo, incompatible.

Según la IANA register, sólo hay 3 registrado menciones de la misma (incluyendo una en la especificación HTTP en sí).

Los otros dos son para:

  • Upgrading to TLS Within HTTP/1.1 (casi nunca se utiliza, que no debe confundirse con HTTP over TLS, que define HTTPS como ampliamente utilizado). Esta actualización permite for a similar mechanism to STARTTLS in other protocols (por ejemplo, LDAP, SMTP, ...) para poder cambiar a TLS en el mismo puerto que la conexión simple, después de intercambiar algunos de los mensajes de protocolo de la aplicación, en lugar de tener todo el intercambio de HTTP en parte superior de SSL/TLS sin que tenga que saber que está en la parte superior de TLS (la forma en que funciona HTTPS).

  • Upgrading to WebSockets (sigue siendo un borrador).

+0

Guau, muy completo. ¡Gracias un montón! – Randomblue

+0

@Bruno, ¿Cómo funcionan los protocolos de actualización personalizada? P.ej. Si nuestro servidor quiere dar soporte a ['Upgrade: firepresence'] (http://lucumr.pocoo.org/2012/9/24/websockets-101/) un protocolo personalizado, ¿cómo podemos hacer que el navegador envíe la solicitud de actualización? ? – Pacerier

+0

@Pacerier No estoy seguro. Supongo que necesitarías cambiar el navegador sustancialmente (o escribir un complemento/extensión si es posible), un poco como lo que se hizo para websockets. – Bruno

Cuestiones relacionadas