Date de publication du RFC : Mai 2019
Auteur(s) du RFC : M. Nottingham
Chemin des normes
Première rédaction de cet article le 3 septembre 2019
Plusieurs normes du Web s'appuient sur l'existence d'un fichier à un
    endroit bien connu d'un site. Les deux exemples les plus connus sont
    robots.txt et
    favicon.ico. Autrefois, ces
    endroits « bien connus » étaient alloués sans schéma
    central. Depuis le RFC 5785, c'est mieux
    organisé, avec tous ces fichiers « sous »
    /.well-known/. Notre
    RFC remplace le RFC 5785 (et le RFC 8307), avec peu de
    changements significatifs.
Prenons l'exemple le plus connu,
    robots.txt, fichier
    stockant la politique d'autorisation des robots qui fouillent le Web. Si un robot examine le site
    Web http://www.example.org/, il va tenter de
    trouver ledit fichier en
    http://www.example.org/robots.txt. Même chose
    pour, par exemple, sitemap.xml ou P3P (section 1
    du RFC). Ce système avait plusieurs inconvénients, notamment le
    risque de collision entre deux noms (puisqu'il n'y avait pas de
    registre de ces noms) et, pire, le risque de collision entre un de
    ces noms et une ressource normale du site. D'où l'importance d'un
    « rangement » de ces ressources bien connues. Elles doivent
    dorénavant être préfixées de
    /.well-known/. Ainsi, si le protocole
    d'autorisation des robots était normalisé aujourd'hui, on
    récupérerait la politique d'autorisation en
    http://www.example.org/.well-known/robots.txt.
À noter que le RFC spécifie uniquement un
    préfixe pour le chemin de la ressource,
    /.well-known/ n'est pas forcément un
    répertoire sur le disque du serveur (même si
    c'est une mise en œuvre possible).
Le RFC 8615 note aussi qu'il existe déjà des mécanismes de récupération de métadonnées par ressource (comme les en-têtes de HTTP ou les propriétés de WebDAV) mais que ces mécanismes sont perçus comme trop lourds pour remplacer la ressource unique située en un endroit bien connu.
Le nom .well-known avait été choisi
    (cf. annexe A de notre RFC) car il
    avait peu de chances de rentrer en conflit avec un nom existant
    (traditionnellement, sur Unix,
    système d'exploitation le plus utilisé sur
    les serveurs Web, les fichiers dont le nom commencent par un point
    ne sont pas affichés).
Bref, passons à la section 3 qui donne les détails
    syntaxiques. Le préfixe est donc /.well-known/,
    les noms en « dessous » doivent être enregistrés (cf. section
    5.1), et ils doivent se conformer à la production
    segment-nz du RFC 3986
    (en clair, cela veut dire qu'ils doivent être une suite de
    caractères ASCII imprimables, avec quelques
    exclusions comme la barre oblique). Du
    point de vue sémantique, ils doivent être précis, pour éviter
    l'appropriation de termes génériques (par exemple, l'application
    Toto qui veut stocker ses métadonnées
    devrait utiliser toto-metadata et pas juste
    metadata.) À noter que l'effet d'une requête
    GET /.well-known/ (tout court, sans nom de
    ressource après), est indéfini (sur mon blog, cela donne ça ; devrais-je le configurer pour
    renvoyer autre chose ? Sur Mastodon, ça donne 404.)
Quelques conseils de sécurité pour le webmestre (section 4) : ces ressources « bien connues » s'appliquent à une origine (un « site Web ») entière, donc attention à contrôler qui peut les créer ou les modifier, et d'autre part, dans le contexte d'un navigateur Web, elles peuvent être modifiées par du contenu, par exemple JavaScript.
La section 5 décrit les conditions d'enregistrement des noms bien connus à l'IANA. Le registre contient par exemple les métadonnées du RFC 6415. Y mettre des noms supplémentaires nécessite un examen par un expert et une description publiée (pas forcément un RFC). Dans les termes du RFC 8126, ce sera Spécification Nécessaire et Examen par un Expert. Il y a un mini-formulaire à remplir (section 3.1 du RFC) et hop, le nom bien connu sera enregistré. Plusieurs existent désormais.
Notez qu'il est très difficile de savoir combien de sites ont
    des ressources /.well-known. Bien sûr,
    Google
    le sait, mais ne
    donne pas accès à cette information (une requête
    inurl:/.well-known ou
    inurl:"/.well-known" ignore hélas le point
    initial et trouve donc surtout des faux positifs). Si on n'a pas
    accès à la base de Google, il faudrait donc faire soi-même une
    mesure active avec un client HTTP qui aille visiter de nombreux
    sites.
Les changements depuis le RFC 5785 sont résumés dans l'annexe B du RFC :
/.well-known/
      n'est plus réservé au Web, il peut être utilisé pour d'autres
      plans d'URI, ce qui a modifié le registre
      des plans pour y ajouter une colonne indiquant s'ils
      permettent ce préfixe (section 5.2),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)