FAQ n°11192, publiée le 28/07/2015, mise à jour le 06/11/2017
WEBDEV
Comment effectuer une redirection HTTP vers HTTPS lors du lancement d'un site dynamique sécurisé par un certificat SSL ?
L'accès à un site dynamique sécurisé hébergé sur un serveur web disposant d'un certificat SSL doit se faire avec le protocole HTTPS. Par exemple : 
https://mon-site.com

Si par erreur le lancement se fait en utilisant uniquement HTTP (http://mon-site.com), et que le serveur web qui héberge le site ne fait pas automatiquement la redirection à son niveau, il est possible d'effectuer une redirection au niveau du site avec le code suivant, dans le code d'initialisation serveur de la première page dynamique du projet : 

SI __SysEnvironnement("SERVER_PORT_SECURE") <> 1 ALORS
ScriptAffiche(PageAdresse("",paSECURISEE), "", Vrai
FinProgramme() // Arrêt session si plus d'autre traitement
FIN

Avec __SysEnvironnement correspondant à la procédure interne suivante : 

PROCEDURE INTERNE __SysEnvironnement(sNomVariable est une chaîne)
sRésultat est une chaîne = SysEnvironnement(sNomVariable)
nPosition est un entier = Position(sRésultat, "=", 1)
SI sRésultat <> "" _ET_ nPosition > 0 ALORS
RENVOYER sRésultat[[nPosition+1 A]]
SINON
RENVOYER ""
FIN
FIN


Une fois le site déployé avec ce code, le lancement du site peut se faire indifféremment en http ou https, le site dynamique basculera automatiquement en SSL.

Dans le cas d'un site ayant uniquement certaines pages accessibles en HTTPS, c'est la fonction WLangage "SSLActive()" qui devra être utilisée.

Le même principe peut être appliqué aux méthodes GET d'un webservice REST pour lequel on voudrait retourner une réponse en HTTPS lorsque l'appel a été fait en HTTP. Le code du projet du webservice REST pourrait faire la redirection : 

SI 1 <> __SysEnvironnement("SERVER_PORT_SECURE") ALORS
ScriptAffiche("https://" + __SysEnvironnement ("SERVER_NAME") + __SysEnvironnement ("SCRIPT_NAME"), __SysEnvironnement ("QUERY_STRING"), Vrai)
FinProgramme() // Arrêt session si plus d'autre traitement
FIN