Un nouvel en-tête HTTP (et un nouveau
type de lien) fait son
apparition avec ce RFC :
Sunset:
(coucher de soleil) sert à indiquer la date où la
ressource Web cessera probablement d'être servie. Le but est,
lorsque le webmestre sait à l'avance qu'il retirera une ressource,
de prévenir les utilisateurs.
Normalement, bien sûr, cela ne devrait pas arriver. Les
URL doivent être
stables. Mais dans certains cas, il peut y avoir une raison
légitime de retirer une ressource qui avait été publiée sur le
Web. Et, si on le sait à l'avance, c'est
plus gentil si on prévient les utilisateurs qui accèdent à cette
ressource. Donc, en pratique, ce nouvel en-tête servira peu (et
sans doute surtout pour les API) mais
il sera utile dans des cas précis. Par exemple (ce sont les cas
cités par le RFC, personnellement, je ne les trouve pas tous pertinents) :
- Certaines ressources sont par nature temporaires. Par
exemple, une page correspondant à une commande en cours sur un
site Web de commerce en ligne. (À mon avis, il vaudrait mieux
qu'elle soit permanente, pour pouvoir accéder à des informations
même une fois la commande exécutée.)
- Lorsqu'une migration vers de nouveaux URL est envisagée
dans le futur.
- Lorsque la loi ou un réglement quelconque l'exige. Par
exemple, le RGPD, comme les lois de
protection des données personnelles qui
l'ont précédé, exige la suppression de ces données lorsque la
raison pour laquelle elles avaient été collectées n'est plus
d'actualité. Si on les détruit au bout d'un mois, on peut
annoncer cette suppression à l'avance.
- Si la ressource fait partie d'une
API, il est possible que l'API soit
remplacée par une nouvelle version et que la date de retrait de
l'ancienne soit connue à l'avance, permettant d'informer les
utilisateurs. (Notez qu'une API comprend en général plusieurs
ressources, donc plusieurs URL. L'en-tête
Sunset:
ne permet pas de traiter ce cas,
cf. section 5 du RFC, mais le type de lien
sunset
permet d'indiquer une page Web
documentant l'API et ses changements.)
Pour ces usages, ce RFC introduit
(section 3)
donc l'en-tête HTTP Sunset:
(coucher de
soleil). Il contient une seule valeur, la date et l'heure de la
suppression, au format HTTP classique de la section 7.1.1.1 du
RFC 7231. Par exemple, pour indiquer qu'une
ressource disparait à la fin de cette année (celle de parution du
RFC) :
Sunset: Tue, 31 Dec 2019 23:59:59 GMT
Et c'est tout. L'en-tête ne donne aucune information sur ce qui
arrivera après (réponse 404, 410, redirection 3xx vers une autre ressource…).
Cet en-tête figure désormais dans
le registre
IANA des en-têtes.
Notre RFC introduit, en plus de l'en-tête HTTP, un type de
lien (cf. RFC 8288), sunset
, qui peut être mis dans d'autres contextes que celui des
en-têtes HTTP, par exemple dans du HTML
(section 6 de notre RFC). Il
permet d'indiquer des détails sur la future suppression
de la ressource, à la page Web indiquée. Ainsi, en
HTML, cela donnerait :
Ce type de lien figure dans
le
registre IANA de ces types.
Le RFC ne précise pas ce que des applications comme les
navigateurs doivent faire exactement avec
cette information. C'est un choix des auteurs des
applications. Ils peuvent choisir, par exemple, d'alerter
l'utilisateur. Notez que la date indiquée n'est qu'une indication. Le serveur
Web reste libre de garder la ressource plus longtemps, ou au
contraire de la supprimer avant.
J'ai mis un champ Sunset:
sur ce blog pour
voir. Regardez
https://www.bortzmeyer.org/apps/limit
:
% curl -i https://www.bortzmeyer.org/apps/limit
HTTP/1.1 200 OK
…
Sunset: Fri, 1 Jan 2100 00:00:00 GMT
Link: ; rel="sunset"; type="text/html"
…
Will be deprecated on 2038-01-19T03:14:08Z and removed on 2100-01-01T00:00:00Z.
Pour traiter ce champ, et le futur
Deprecation:
(qui est moins « dur » que
Sunset:
, il indique un abandon, pas forcément
un retrait), regardez
ce
script en Python.
Sinon, quelques logiciels utilisent ou génèrent l'information sur le
coucher de soleil :