Produire des URL « absolues » valides en HTTP et HTTPS
Par Benjamin Drieu le jeudi 10 janvier 2013, 12:03 - Geek - Lien permanent
Il y a un problème bien connu quand on fait du web, c'est celui de savoir comment construire des URL absolues qui respectent le protocole actuel utilisé par la page web qui contient. Votre client est en HTTPS, vous n'allez pas soumettre un formulaire en HTTP (gros warning du client). Votre client est en HTTP, voulez vous le forcer en HTTPS ? Cette prise de tête est résolue par une astuce que je m'en veux de ne pas connaître jusque là.
La méthode classique consiste soit à se moquer du problème, soit à scripter des trucs dégueulasses qui consistent à déterminer le protocole actuel pour construire les liens.
Aujourd'hui encore j'ai appris une chose, qu'il est possible d'utiliser des URL « absolues » en HTML qui ne pointent pas vers un protocole particulier (HTTP ou HTTPS). En gros, ne pas utiliser des URL absolues mais des URL relatives jusqu'au protocole (scheme). On va donc retirer le scheme de l'URL et le client utilisera le protocole courant, qu'il soit HTTP ou HTTPS. Finis les warnings du navigateur sur les formulaires non-HTTPS !
Bref, il est tout à fait possible d'utiliser le lien suivant dans une page, c'est documenté dans la section 4.2 de la RFC 3986:
<a href="//www.foo.org/bar.html">Test de lien</a>
Et ça marche dans tous les navigateurs qui implémentent la norme HTTP récente, donc.
Libriste, programmeur, ceinture noire d'Emacs, artiste wanabee, les points de vue ici présentés n'engagent que moi.
Commentaires
C'est ce qu'utilise facebook, google ou tout les gros sites qui chargent les libs jquery externes :)
C'est courant mais on en parle peu !