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:
Test de lien
Et ça marche dans tous les navigateurs qui implémentent la norme HTTP récente, donc.