Loading AI tools
De Wikipedia, la enciclopedia libre
HTTP/1.1 introdujo el soporte para el campo de cabecera Upgrade. En el intercambio, el cliente comienza haciendo una petición de texto claro, que es posteriormente actualizada/mejorada (upgraded) a una versión más nueva del protocolo http o cambiada a un protocolo diferente. La actualización (upgrade) de la conexión debe ser solicitada por el cliente, si el servidor quiere imponer un upgrade puede enviar una respuesta "426 upgrade required". El cliente puede entonces enviar una nueva solicitud con las cabeceras upgrade apropiadas.
Un uso posible es comenzar una solicitud en el puerto http normal, pero cambiar a Transport Layer Security (TLS).[1] En la práctica, dicho uso es poco frecuente, siendo el esquema de URL https una forma mucho más común de iniciar http cifrado.
El servidor devuelve un código de estado 426 para alertar a los clientes de versiones anteriores de que el fallo está relacionado con el cliente (los códigos de nivel 400 indican un fallo del cliente: Lista de códigos de estado HTTP).
Este método para establecer una conexión segura es ventajoso debido a que :
Una desventaja de este método es que el cliente no puede especificar el requisito para HTTP seguro en el URI. Por tanto un ataque Man-in-the-middle puede mantener una conexión sin cifrar y sin autenticar con el cliente mientras mantiene una conexión cifrada con el servidor.
WebSocket también utiliza este mecanismo para establecer una conexión con un servidor HTTP de forma compatible.[2] El protocolo de WebSocket tiene dos partes: un apretón de manos (handshake) para establecer la conexión mejorada (upgrade) y, posteriormente, la transferencia real de datos. Primero, un cliente solicita una conexión websocket usando las cabeceras "Upgrade: websocket" y "Connection: Upgrade", junto con algunas cabeceras específicas del protocolo para establecer la versión utilizada y establecer un apretón de manos. El servidor, si es compatible con el protocolo, responde con las mismas cabeceras "Upgrade: websocket" y "Connection: Upgrade" y completa el apretón de manos.[3] Una vez que el apretón de manos se realiza correctamente, se inicia la transferencia de datos.