TrueURL

101 Switching Protocols

Le serveur accepte la demande Upgrade du client et bascule la connexion vers un autre protocole, en pratique presque toujours WebSocket.

Message de statut
Switching Protocols
Redirection
Non
Mise en cache possible par défaut
Non

101 Switching Protocols signifie que le serveur accepte l’en-tête de requête Upgrade envoyé par le client. Juste après la ligne vide qui termine la réponse 101, les deux parties parlent un autre protocole sur cette connexion. La réponse doit contenir un en-tête Upgrade qui indique le nouveau protocole.

Aujourd’hui, il s’agit presque toujours de l’établissement d’une connexion WebSocket (handshake). Le navigateur envoie un GET avec Upgrade: websocket, Connection: Upgrade et un Sec-WebSocket-Key. Le serveur répond 101 avec le Sec-WebSocket-Accept correspondant, puis les deux parties échangent des trames WebSocket. Le code 101 servait aussi à la mise à niveau h2c, de HTTP/1.1 en clair vers HTTP/2, aujourd’hui dépréciée. Les navigateurs négocient désormais HTTP/2 et HTTP/3 lors de l’établissement de la connexion TLS (ALPN).

Le mécanisme Upgrade n’existe qu’en HTTP/1.1. HTTP/2 et HTTP/3 n’envoient jamais de 101 ; sur ces protocoles, les WebSockets utilisent la méthode CONNECT étendue (RFC 8441 et RFC 9220).

Exemple de réponse

HTTP
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

SEO et vérification des redirections

Un code 101 n’est jamais le résultat d’une requête de page ordinaire. Les navigateurs et les robots d’exploration ne le reçoivent que lorsqu’ils demandent explicitement une mise à niveau de la connexion : il n’a donc aucun effet sur l’indexation. Un vérificateur de redirections envoie de simples requêtes GET, HEAD ou POST et ne verra jamais de 101. Si l’on vérifie un point de terminaison WebSocket comme une URL normale, il répond généralement par un code 4xx tel que 426 Upgrade Required ou 400 Bad Request.

Causes fréquentes et cas d’usage

  • Un navigateur ouvre une connexion WebSocket (new WebSocket('wss://...')) et le serveur accepte la négociation.
  • Un client demande la mise à niveau h2c, aujourd’hui dépréciée, vers HTTP/2 en clair, et le serveur la prend en charge.
  • Les WebSockets échouent derrière un proxy inverse, car celui-ci ne transmet pas les en-têtes Upgrade et Connection. Dans nginx, définissez proxy_http_version 1.1 et transmettez ces deux en-têtes au serveur backend.

Vérificateur de redirections d’URL

Affichez chaque code de statut que renvoie une URL, saut par saut, avec le vérificateur de redirections gratuit de TrueURL.