El campo de encabezado de actualización es un campo de encabezado HTTP introducido en HTTP / 1.1 . En el intercambio, el cliente comienza haciendo una solicitud de texto sin cifrar , que luego se actualiza a una versión más reciente del protocolo HTTP o se cambia a un protocolo diferente. El cliente debe solicitar una actualización de la conexión; si el servidor desea aplicar una actualización, puede enviar una 426 Upgrade Required
respuesta. Luego, el cliente puede enviar una nueva solicitud con los encabezados de actualización apropiados mientras mantiene la conexión abierta.
Usar con TLS
Un uso es comenzar una solicitud en el puerto HTTP normal pero cambiar a Transport Layer Security (TLS). [1] En la práctica, este uso es poco común, y HTTPS es una forma mucho más común de iniciar HTTP cifrado.
El servidor devuelve un 426
código de estado para alertar a los clientes heredados de que la falla estaba relacionada con el cliente (los 400
códigos de nivel indican una falla del cliente).
Este método para establecer una conexión segura es ventajoso porque:
- No requiere una redirección de URL complicada y problemática en el lado del servidor;
- Habilita el alojamiento virtual de sitios web seguros (aunque HTTPS también lo permite usando Indicación de nombre de servidor ); y
- Reduce el potencial de confusión del usuario al proporcionar una forma única de acceder a un recurso en particular.
Si los mismos recursos están disponibles en el servidor a través de medios seguros encriptados y medios claros no encriptados, un intermediario puede mantener una conexión no encriptada y no autenticada con el cliente mientras mantiene una conexión encriptada con el servidor.
Las desventajas de este método incluyen:
- El cliente no puede especificar el requisito de un HTTP seguro en el URI (aunque el cliente puede solicitarlo a través de la negociación de actualización); y
- Dado que HTTP se define en función de los saltos , es posible que se requiera un túnel HTTP para evitar los servidores proxy.
Usar con WebSocket
WebSocket también utiliza este mecanismo para configurar una conexión con un servidor HTTP de forma compatible. [2] El protocolo WebSocket tiene dos partes: un protocolo de enlace para establecer la conexión mejorada, luego la transferencia de datos real. Primero, un cliente solicita una conexión WebSocket mediante los encabezados Upgrade: WebSocket
y Connection: Upgrade
, junto con algunos encabezados específicos del protocolo para establecer la versión que se está utilizando y configurar un protocolo de enlace. El servidor, si es compatible con el protocolo, responde con la misma Upgrade: WebSocket
y Connection: Upgrade
los encabezados y completa el apretón de manos. [3] Una vez que el protocolo de enlace se completa con éxito, comienza la transferencia de datos.
Usar con HTTP / 2
El mecanismo de actualización HTTP se utiliza para establecer HTTP / 2 a partir de HTTP simple. [4] El cliente inicia una conexión HTTP / 1.1 y envía un Upgrade: h2c
encabezado. Si el servidor admite HTTP / 2, responde con el código de estado del protocolo de conmutación HTTP 101 . El mecanismo de actualización HTTP se usa solo para HTTP2 (h2c) de texto sin formato. En el caso de HTTP2 sobre TLS (h2), se utiliza la extensión del protocolo ALPN TLS en su lugar.
Ver también
Referencias
- ^ RFC 2817
- ^ "El Protocolo WebSocket" . IETF . Consultado el 15 de diciembre de 2013 .
- ^ Raymor, Brian. "WebSockets: estable y listo para desarrolladores" . Red de desarrolladores de Microsoft. Archivado desde el original el 16 de diciembre de 2013 . Consultado el 15 de diciembre de 2013 .
- ^ "Iniciando HTTP / 2 para" http "URI" . Protocolo de transferencia de hipertexto versión 2 (HTTP / 2) . doi : 10.17487 / RFC7540 . RFC 7540 .