Tout inclure en HTTPS

farfadefarfade Messages 9Membre
13 avril modifié dans Installer et utiliser ZwiiCMS

Bonjour,

Chrome bloque des requêtes d'éléments chargés par zwii :

Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure script '<URL>'. This request has been blocked; the content must be served over HTTPS.

Zwii peut-il appeler ses sous-contenus en HTTPS quand il est lui-même appelé en HTTPS ? (sans dépendre de config tierce, serveur web, hébergeur etc).

En effet, ici c'est Chrome qui bloque. Même si côté serveur je redirige tout le traffic HTTP vers HTTPS, ça ne sert à rien puisque la requête ne part pas du navigateur. Autoriser le contenu non sécurisé dans Chrome fait que ça remarche, mais je ne peux pas exiger ça des internautes :)

Merci !

Post edited by farfade on

Commentaires

  • fredfred Messages 2,220Administrateur

    Bonjour

    Quel contenu est-il chargé en http ?

    The f....g boss
  • farfadefarfade Messages 9Membre
    14 avril modifié

    Bonjour fred,

    Quasiment tout le css et le js, pour autant que je puisse en juger. Par exemple :

    Mixed Content: The page at 'https://domain.com/' was loaded over HTTPS, but requested an insecure script 'http://domain.com/core/vendor/jquery/jquery.min.js'. This request has been blocked; the content must be served over HTTPS.

    Ca charge si je surcharge isHttps() { return (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https'); }

  • farfadefarfade Messages 9Membre
    14 avril modifié

    Je suis sur une Azure Web App, je pense que la raison est la suivante :


    In App Service, TLS/SSL termination happens at the network load balancers, so all HTTPS requests reach your app as unencrypted HTTP requests. If your app logic needs to check whether the user requests are encrypted, inspect the X-Forwarded-Proto header:

    PHPCopy

    if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    // Do something when HTTPS is used
    }
    

    Popular web frameworks let you access the X-Forwarded-* information in your standard app pattern. In CodeIgniter, the is_https() function checks the value of X_FORWARDED_PROTO by default.

  • farfadefarfade Messages 9Membre
    14 avril modifié

    Bon, maintenant il faut que je trouve pourquoi je ne peux pas me logguer. ?user/login fait un POST sur index mais rien ne se passe.

    La condition initiale "$this->isPost()" dans la fonction login() n'a pas l'air de plaire à Azure Web App. Si je la shunte, la fonction login fait son job (réagit correctement en fonction du password, du captcha, ...) mais le login ne persiste pas. Je sens que je ne suis pas sorti de l'auberge :D

    Post edited by farfade on
  • fredfred Messages 2,220Administrateur

    Dans le script main.php, le chargement des ressources de Zwii ne s'effectue que selon l'URL de base. Si l'URL de base, donc celle du site est HTTP, les ressources sont en HTTP, sinon en HTTPS.

    Je pense que la solution du reverse proxy devrait fonctionner, ceci dit je n'ai aucune connaissance de ces problématiques.

    La modification devrait être située dans l'entête de main.php :

    <!DOCTYPE html>
    <?php
    // Ajout de la détection HTTPS pour Azure au début du fichier
    if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
        $_SERVER['HTTPS'] = 'on';
    }
    ?>
    <html prefix="og: http://ogp.me/ns#" lang="fr_FR">
    // ... reste du code ...
    

    Bon courage :)

    The f....g boss
Connectez-vous ou Inscrivez-vous pour répondre.