FAQ n°11192, publiée le 28/07/2015
Comment effectuer une redirection HTTP vers HTTPS lors du lancement d'un site dynamique sécurisé ou d'un webservice par un certificat SSL ?
L'accès à un site dynamique sécurisé ou webservice 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 le lancement se fait en utilisant uniquement HTTP (http://mon-site.com), la requête HTTP doit être redirigée en HTTPS. Il est recommandé d'utiliser la redirection automatique proposée par tous les serveurs web : 
  • si le site est hébergé sur une plateforme d'exploitation de PCSCLOUD, il suffit de demander l'ajout de la redirection automatique HTTP vers HTTPS au support de PCSCLOUD,
  • si vous prenez en charge la configuration du serveur web qui héberge le site, il faut se référer à la documentation de Apache ou IIS afin de connaître les réglages nécessaires en fonction des choix de configuration du serveur web déjà en place.


Dans le cas exceptionnel ou le serveur web qui héberge le site ne peut pas automatiquement gérer la redirection, 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
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)
FIN