emily_d Posted January 18, 2013 Share Posted January 18, 2013 (edited) Ce problème ne doit pas concerner tout le monde (je suis en simple hosting chez Gandi) et ne touche que les pages commandes, contact et compte client (celles qui sont forcées en SSL après l’activation de l’option SSL). Lorsqu’on accède à ces pages on obtient une erreur 301 de redirection. Le problème se situe dans classes/controller/FrontController.php autour de la ligne 117. if ($this->ssl && !Tools::usingSecureMode() && Configuration::get('PS_SSL_ENABLED')) { header('HTTP/1.1 301 Moved Permanently'); header('Cache-Control: no-cache'); header('Location: '.Tools::getShopDomainSsl(true).$_SERVER['REQUEST_URI']); exit(); } En regardant les variables utilisées dans la condition, la methode Tools::usingSecureMode() renvoie false alors qu’elle devrait renvoyer true. Par contre cette méthode renvoie true lorsque je visite une page produit quelconque en https. En utilisant ($this->ssl && false && Configuration::get('PS_SSL_ENABLED')), cela semble marcher correctement. La question est donc pourquoi usingSecureMode cesse de renvoyer true. En examinant, la méthode : public static function usingSecureMode() { if (isset($_SERVER['HTTPS'])) return ($_SERVER['HTTPS'] == 1 || strtolower($_SERVER['HTTPS']) == 'on'); // $_SERVER['SSL'] exists only in some specific configuration if (isset($_SERVER['SSL'])) return ($_SERVER['SSL'] == 1 || strtolower($_SERVER['SSL']) == 'on'); return false; } Je remarque que $_SERVER['HTTPS'] renvoie ‘on’ sur les pages produits en https et ne renvoie rien sur les pages commandes, contact et compte client. En faisant un dump de $_SERVER, je me rends compte que la variable $_SERVER['HTTPS'] n’existe pas, par contre on trouve ça [REDIRECT_HTTPS] => on . EUREKA ! Donc si je ne raconte pas n’importe quoi, on doit réécrire la méthode de cette manière : public static function usingSecureMode() { if (isset($_SERVER['HTTPS'])) return ($_SERVER['HTTPS'] == 1 || strtolower($_SERVER['HTTPS']) == 'on'); // $_SERVER['SSL'] exists only in some specific configuration if (isset($_SERVER['SSL'])) return ($_SERVER['SSL'] == 1 || strtolower($_SERVER['SSL']) == 'on'); // $_SERVER['REDIRECT_HTTPS'] exists only in some specific configuration if (isset($_SERVER['REDIRECT_HTTPS'])) return ($_SERVER['REDIRECT_HTTPS'] == 1 || strtolower($_SERVER['REDIRECT_HTTPS']) == 'on'); return false; } Je pense faire un push sur GitHub si vous trouvez ça correcte. EDIT Je viens de voir qu'on avait déjà proposé une solution utilisant : if(isset($_SERVER['SCRIPT_URI'])) { //preg_match('^https', $_SERVER['SCRIPT_URI']) return ((strpos($_SERVER['SCRIPT_URI'], 'https') === 0) ? true : false); } L'avantage de cette solution c'est de ne pas chercher une 'réponse SSL' du serveur mais de voir si l'url contient https. EDIT La résolution du problème vient d'intégrer la version development de PrestaShop. Edited May 21, 2013 by emily_d (see edit history) Link to comment Share on other sites More sharing options...
emily_d Posted January 23, 2013 Author Share Posted January 23, 2013 La pull request en ligne : https://github.com/P...taShop/pull/225 Link to comment Share on other sites More sharing options...
binou Posted March 23, 2013 Share Posted March 23, 2013 un GRAND, GRAND, GRAND, merci. Tu viens de m'enlever une épine du pied, ça faisait 50ans que je cherchais cette solution ! Link to comment Share on other sites More sharing options...
emelaz Posted January 6, 2017 Share Posted January 6, 2017 Je suis tombé ce poste qui m'a bien aiguillé pour arriver a installer le SSL gateway d'OVH: https://www.ovh.com/fr/g2370.utilisation_du_ssl_gateway Pour éviter les redirections en boucle, il suffit d'ajouter 2 lignes à la fonction function usingSecureMode() dans classes/Tools.phpjuste avant "return false;" if (isset($_SERVER['HTTP_X_FORWARDED_PORT'])) { return Tools::strtolower($_SERVER['HTTP_X_FORWARDED_PORT']) == '443'; } Pensez aussi à mettre à "NON" le paramètre de backoffice "Vérifier l'adresse IP du cookie" dans le menu "administration=>Préférences Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now