Date de publication du RFC : Février 2016
Auteur(s) du RFC : T. Bray (Textuality)
Chemin des normes
Réalisé dans le cadre du groupe de travail IETF httpbis
Première rédaction de cet article le 1 mars 2016
Voici donc un nouveau code de retour HTTP qui a fait couler énormément d'encre : 451 est désormais l'erreur HTTP à utiliser lorsqu'un serveur HTTP ne peut pas envoyer la ressource demandée par son client pour des raisons légales, en clair lorsqu'il y a censure.
Rappelons que les codes d'erreur HTTP (RFC 7231, section 6) sont composés de trois chiffres, le premier indiquant la catégorie. 4 (RFC 7231, section 6.5) est une erreur due au client (et il ne sert donc à rien de réessayer plus tard).
Ce nouveau code 451 permet de la censure avouée, suivant les principes du RFC 4924 et de la section 4 du RFC 4084. On peut dire clairement à l'utilisateur que sa demande est légalement impossible à satisfaire. Notez que toutes les dictatures ne seront pas ravies de cette transparence. Du temps de Ben Ali, la censure tunisienne générait des faux 404 (Not found) pour faire croire que la ressource demandée n'existait pas.
La section 3 de notre RFC expose les détails techniques. Notez que le serveur qui répond 451 n'est pas forcément le serveur d'origine de la ressource (s'il l'était, il ne souhaiterait probablement pas mettre en œuvre la censure de son propre contenu). 451 sera donc sans doute plutôt renvoyé par des serveurs intermédiaires, genre proxy ou moteurs de recherche.
Vu l'objectif de transparence, le RFC demande que la réponse 451 soit accompagnée d'une explication, indiquant qui bloque, pourquoi, et selon quelle loi. Le RFC fournit un exemple amusant, inspiré du film La vie de Brian :
HTTP/1.1 451 Unavailable For Legal Reasons Link: <https://spqr.example.org/legislatione>; rel="blocked-by" Content-Type: text/html <html> <head><title>Unavailable For Legal Reasons</title></head> <body> <h1>Unavailable For Legal Reasons</h1> <p>This request may not be serviced in the Roman Province of Judea due to the Lex Julia Majestatis, which disallows access to resources hosted on servers deemed to be operated by the People's Front of Judea.</p> </body> </html>
Le RFC note bien que le code 451 n'indique pas si la ressource existe ou pas (par exemple, un proxy peut bloquer toutes les requêtes allant vers un nom de domaine donné).
Notre RFC fournit également des indications sur comment la censure peut être contournée, par exemple avec un VPN vers un pays plus libre, ou bien avec Tor. C'est d'ailleurs un des intérêts pratiques de ce code 451 : un client HTTP pourra agir automatiquement lorsqu'il rencontrera cette erreur. Ce code n'est donc pas purement décoratif (une objection qui lui avait souvent été faite au début du processus à l'IETF.) En prime, ce code pourra être utile à des systèmes de suivi de la censure, comme Lumen. Peut-être cela aidera-t-il à mesurer la censure (du moins dans les pays les plus légalistes, les autres n'utiliseront pas 451). Pour les mêmes raisons, des organisations de défense des droits de l'homme comme le CDT ou comme article 19 ont exprimé leur soutien pour ce code.
L'en-tête Link:
dans l'exemple plus haut
est là pour identifier formellement l'entité responsable du
blocage (section 4 du RFC), en utilisant les liens du RFC 8288. Cela suppose évidemment que celle-ci
assume ses décisions, ce qui n'est pas toujours le cas (section 5
du RFC, qui rappelle qu'il y aura toujours une censure hypocrite).
Le code 451 est désormais ajouté au registre
IANA des codes de retour HTTP, et la relation
blocked-by
est dans le registre
des relations. (Notez bien que l'exemple ci-dessus, copié du
RFC, est erroné.)
« Thanks also to Ray Bradbury », dit l'annexe A du RFC, puisque ce code d'erreur est évidemment une référence geek au roman du célèbre écrivain.
Un exemple de mise en œuvre parmi tant d'autres : la bibliothèque Pylons. Le magasin d'applications de Firefox a 451 parmi ses réponses possibles si l'application est illégale dans le pays du client. Et 451 a une image parmi les fameux HTTP status cats, montrant Bradbury et son chat.
Ce code d'erreur a suscité beaucoup d'intérêt, il a une page Wikipédia, un site Web en Grande-Bretagne et a fait l'objet de nombreux articles dans les médias.
En France, le serveur « La Main Rouge » du Ministère de l'Intérieur n'utilise pas 451 lorsqu'on tente d'accéder à un site Web interdit. Au lieu de cela, leur serveur renvoie 200, ce qui est illogique. (Un point amusant : si on utilise wget - mais pas curl - le serveur renvoie 403.)
À la réunion IETF de Prague en juillet 2017, le hackathon a été l'occasion de travailler sur des utilisations de ce code 451. Voici la présentation qui a été faite et l'Internet-Draft draft-451-imp-report. Le code a été mis sur Github.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)