[12.0.09] - Problème avec Snipcart (hors module)

ClementLClementL Messages 21Membre
février 2023 modifié dans [v12] Un bug découvert ?
Bonjour,

Bonne année !
J'ai récemment mis à jour le site de mon association : https://comitehistoriquehersincoupigny.fr
Il tourne sur ZWII depuis longtemps (de mémoire au moins 6 ans, facile)
J'avais été l'un des premiers à avoir installer SNIPCART dessus pour pouvoir établir une boutique en ligne (ce qui a inspiré le module de Sylvain) - mais comme j'avais déjà "codé" en dur dans l'HTML de l'éditeur tous mes produits, j'ai toujours utilisé une version codée directement dans l'éditeur sans installer de module. Tant que ça marche !

Le problème actuel, c'est que l'ajout au panier génère bien la page du panier snipcart mais celui-ci mouline avec un sublime message : Nous préparons votre panier… (j'ai constaté un léger bandeau en haut de la page, orange/jaune qui s'efface juste au chargement de celle-ci, très très rapide)

J'ai pensé que cela pouvait venir de l'ancien script snipcart, je l'ai donc remplacé dans le Body par le nouveau, méthode recommandée après la balise <body> (voir sur le site : https://docs.snipcart.com/v3/setup/installation - j'ai bien mis la bonne API Key)*

Ma dernière commande effective sur le site date du 10 juin 2022 ; je m'étais un peu inquiété ces dernières semaines car en général, on a une à 2 commandes par mois ; mais à priori, en test de chargement de panier, ça fonctionnait encore bien durant l'automne.

Le JS n'est pas du tout ma tasse de thé, je ne vois pas ce qui peut clocher de part et d'autre ?
J'ai essayé sur les principaux navigateurs Safari, Chrome, Edge, W10 & MacOs

D'avance merci pour toutes idées ?
Clément

* En tentant de mettre le script directement dans le corps de ce texte, j'ai remarqué qu'il ajoutait des <span> à pas mal d'endroit du script, est ce possible que ça soit le cas dans l'éditeur situé dans configuration > script externes > script dans body ?

Post edited by fred on
«13

Commentaires

  • fredfred Messages 1,704Administrateur
    janvier 2023 modifié
    Bonjour,

    La lecture de la console, affiche une tonne d'erreurs : 


    Va falloir déboguer...
    The f....g boss
  • ClementLClementL Messages 21Membre
    Bonjour Fred,
    Merci pour ta réponse, j'ai vu avec la console de safari effectivement que les ressources ne se chargeaient pas ? 404. Ca provient de snipcart ?
    Sur la console de Safari, j'ai ça

  • ClementLClementL Messages 21Membre
    janvier 2023 modifié
    Bonjour Fred,

    J'ai eu une réponse de Snipcart, il me dit que le script est appelé 2 fois, ce qui peut effectivement bloquer la connexion avec les serveurs Snipcart.

    On a constaté effectivement que lorsque l'on mettait le script dans Configuration > Script dans Body, il était généré 2 fois sur les pages du site.
    Lorsque l'on le met uniquement sur la page via Editer la Page > Extension > Editeur JS : là ça n'apparaît qu'une fois
    Il y aurait un souci peut-être de templating qui duplique le script quand on passe par Configuration > Body.

    L'erreur de script est corrigée mais le bloquage CORS reste ; snipcart bloque ; il y aurait donc peut-être un problème au niveau de l'application ZWII, il manquerait des header dans les requêtes générées de l'appli qui permettraient de passer la sécurité CORS. 

    Quelques pistes
    - Proxy CORS
    - Bibliothèque JS qui génère les en-têtes CORS
    - Modification sur Serveur pour générer des en-têtes CORS

    A voir, j'analyse encore
    Clément

  • fredfred Messages 1,704Administrateur
    janvier 2023 modifié
    Bonjour Clément,

    Meilleurs voeux !

    Configuration > Script dans Body, il était généré 2 fois sur les pages du site.
    C'est une info que je vérifierai cette semaine sur une version blanche de Zwii.

    Les erreurs CORS seront liées aux transactions avec le serveur Snipcart, je te laisse creuser le problème.

    Fred
    Post edited by fred on
    The f....g boss
  • ClementLClementL Messages 21Membre
    Bonjour Fred, voilà les pistes potentielles (avec l'aide d'un ami développeur sur Python ; il m'a confirmé que les nouvelles règles CORS sont un casse-tête pour pas mal de développeurs)

    CAS 1 -> PAS POSSIBLE - Si vous avez le contrôle sur le serveur situé à https://cdn.snipcart.com, vous pouvez modifier la configuration du serveur pour autoriser les requêtes provenant de votre domaine. Vous pouvez le faire en définissant l'en-tête Access-Control-Allow-Origin sur votre domaine, ou en le définissant sur * pour autoriser n'importe quel domaine à faire des requêtes sur le serveur.

    CAS 2 -> UN PROXY CORS ?
    Si vous n'avez pas le contrôle sur le serveur situé à https://cdn.snipcart.com, vous pouvez utiliser un proxy CORS pour faire la requête. Un proxy CORS est un serveur qui vous permet d'envoyer une requête à lui, puis il fait la requête au serveur de destination à votre place, en ajoutant les en-têtes CORS nécessaires à la réponse.

    CAS 3 -> AJOUT D'UNE BIBLIOTHEQUE JS ?
    Si vous utilisez une bibliothèque ou un cadre JavaScript qui vous permet de faire des requêtes, il peut avoir des options pour contourner les restrictions CORS. Par exemple, dans jQuery, vous pouvez utiliser l'option xhrFields de la fonction $.ajax pour définir la propriété withCredentials sur true, ce qui ajoutera les en-têtes CORS nécessaires à la requête.

    CAS 4 -> PAS POSSIBLE SUR CE SITE -> Serveur Mutualisé
    Si vous avez le contrôle sur le serveur qui sert la page web, vous pouvez ajouter l'en-tête Access-Control-Allow-Origin à la réponse du serveur. Cet en-tête spécifie quels domaines sont autorisés à faire des requêtes au serveur. Par exemple, pour autoriser le domaine https://cdn.snipcart.com à faire des requêtes sur votre serveur, vous pouvez définir l'en-tête sur https://cdn.snipcart.com. Cependant, soyez conscient que cela peut être un risque de sécurité, car cela permet au domaine https://cdn.snipcart.com de faire des requêtes sur votre serveur.

    Qu'en penses tu ?
    A te lire
    Clément
  • fredfred Messages 1,704Administrateur
    Bonsoir Clément, 
    Réponse à ton avant-dernier message, il y avait effectivement un double appel, c'est corrigé dans 12100.
    Quant à ton pb de CORS, j'avoue le découvrir en même temps que toi. Je pense que le cas 3 est la seule solution simple, cela-dit, c'est sans avoir appronfondi. 
    Qu'en pense le support SnipCart ?
    Fred

    The f....g boss
  • ClementLClementL Messages 21Membre
    Bonsoir Fred

    J'ai trouvé cela sur les erreurs CORS
    https://developer.mozilla.org/fr/docs/Web/HTTP/CORS

    J'ai tenté ce script
    var invocation = new XMLHttpRequest();
    var url = 'http://truc.autre/resources/public-data/';
    
    function callOtherDomain() {
      if(invocation) {
        invocation.open('GET', url, true);
        invocation.onreadystatechange = handler;
        invocation.send();
      }
    }
    
    en remplaçant l'url par la ressource CDN mais ça n'a pas fonctionné Je bloque A te lire Clément
  • fredfred Messages 1,704Administrateur
    Le problème vient bien d’un échange entre les scripts snipcard et leurs serveurs. Zwii n’est pas vraiment concerné.  Que répond leur support ? 
    Grâce à @augras, un problème à été identifié au niveau de la prise en compte des scripts de page, il serait bon que tu testes depuis la version 12.1 en cours de dev.  

    The f....g boss
  • fredfred Messages 1,704Administrateur
    @ClementL, merci de prendre connaissance de fil de discussion : 
    https://forum.zwiicms.fr/discussion/478/12-0-09-comment-utiliser-lediteur-js#latest 
    Ton problème a peut-être la même cause.

    The f....g boss
  • ClementLClementL Messages 21Membre
    Bonjour @fred
    Désolé pour ma réponse tardive. De snipcart, au niveau du support, je n'ai eu que la réponse concernant le fait qu'il y avait un double appel. (Script dupliqué) ; j'ai vu le problème des scripts au niveau de l'éditeur.
    Quel est donc la solution que tu préconises pour l'incorporation des scripts JS de Snipcart (https://docs.snipcart.com/v3/setup/installation)
    La 12.1 est disponible sur le Github? sinon quand serait-elle disponible par mise à jour via l'application ?
    1. Je tente les scripts Snipcart seuls, et 2. si ça bloque au niveau du CORS, je tente de reclaquer le script JS pour les entêtes (peut-être en appelant cette fois une bibliothèque JS). Sinon, après je bloque et ça posera un problème de sousous (car la boutique est intéressante pour l'association).
    A te lire
    Clément
  • ClementLClementL Messages 21Membre
    Re @fred
    J'ai trouvé cela (https://auth0.com/blog/cors-tutorial-a-guide-to-cross-origin-resource-sharing/) pour ajouter des entêtes CORS à l'application.
    Si cela peut aider ; de ce que je comprends maintenant si une application doit aller chercher une ressource sur un serveur extérieur, certains bloquent la requête si celle-ci n'est pas signée 
    A te lire
    Clément
  • fredfred Messages 1,704Administrateur
    Bonjour @ClementL
    C'est ça, voilà pourquoi je ne comprends pas la démarche de Snipcart, c'est quand même leur script à eux.
    The f....g boss
  • ClementLClementL Messages 21Membre
    janvier 2023 modifié
    Bonjour @fred,
    J'ai réinstallé 11.5.13, le problème Snipcart a disparu ; la sauvegarde était resté sur les anciens scripts, donc ils ont été restauré.
    J'ai juste cela en erreur dans la console JS :

    [Error] The #snipcart div was removed from the document. This may happen when a frontend library is used to render the div. You should only render it once, or it might prevent the cart from working.
    (fonction anonyme) (snipcart.js:32:1074546)

    On dirait que la div est rendue 2 fois, peut-être déjà un problème de duplication dans les scripts template du 11 ?

    J'ai posté un message sur notre FB, pour avoir des REX, je vais voir si les personnes, à l'usage, peuvent aller au bout du processus et finaliser leurs commandes.
    A te lire
    Clément
  • augrasaugras Messages 435Moderateur
    Bonjour,
    Mêmes problèmes avec le module : j'ai passé mon site de tests de la version 11.5.11 à la 12.0.09 ce matin.
    Ça fonctionne en 11 mais plus en 12.
    ______________________________________________________
                 Logo de la boutique bi1sur.com
             https://bi1sur.com
  • fredfred Messages 1,704Administrateur
    Attention, la duplication a été traitée suite au message de @augras il faut installer la version 12.1.00 que je dois publier ces jours prochains.
    https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS/src/branch/12100 

    The f....g boss
  • augrasaugras Messages 435Moderateur
    Bonjour,
    Maj en 12.1.00 : problème persistant.
    Tests avec le module.
    Rien n'ayant changé côté snipcart il doit bien y avoir une raison à ce dysfonctionnement côté zwii : fonctionne avant le passage en 12 mais plus après. Et retour en 11 tout fonctionne. La duplication était certainement une part du problème, mais pas seulement.
    La console dit :
    Blocage d’une requête multiorigine (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur https://cdn.snipcart.com/themes/v3.0.25/l10n/fr_FR.json. Raison : l’en-tête CORS « Access-Control-Allow-Origin » est manquant.<br><br>Locale fr_FR was not found, falling back to fr.<br><br>RangeError: invalid language tag: "fr_FR"<br>    vS https://cdn.snipcart.com/themes/v3.0.25/default/snipcart.js:32<br>    install https://cdn.snipcart.com/themes/v3.0.25/default/snipcart.js:32<br>............. plein de lignes identiques à partir du https<br>




    ______________________________________________________
                 Logo de la boutique bi1sur.com
             https://bi1sur.com
  • fredfred Messages 1,704Administrateur
    Oui j'avais vu ça.
    The f....g boss
  • augrasaugras Messages 435Moderateur
    Tu as une idée de ce qui a changé  et qui peut donner ça ?
    ______________________________________________________
                 Logo de la boutique bi1sur.com
             https://bi1sur.com
  • fredfred Messages 1,704Administrateur
    Il faudrait que j'essaie d'installer le module pour voir ce que ça donne. Sûrement en fin de semaine.
    Pourrais-tu partager le module ? Pas moyen de le retrouver.
    The f....g boss
  • fredfred Messages 1,704Administrateur
    C'est bon j'ai retrouvé une version sur le forum.
    The f....g boss
  • augrasaugras Messages 435Moderateur
    Ok.
    Si tu te souviens à un moment snipcart n'a plus fonctionné, à partir d'une certaine version 11 : tu as corrigé quelque chose pour que ça fonctionne mais je ne saurai dire si c'est au niveau du module ou de zwii.
    Bon courage !
    ______________________________________________________
                 Logo de la boutique bi1sur.com
             https://bi1sur.com
  • fredfred Messages 1,704Administrateur
    Je valide l'apparition des erreurs entre une v11 et une v12 c'est déjà un point positif, sauf que la lumière ne m'est pas encore venue ;) 

    The f....g boss
  • augrasaugras Messages 435Moderateur
    Que la lumière soit ! :)
    ______________________________________________________
                 Logo de la boutique bi1sur.com
             https://bi1sur.com
  • ClementLClementL Messages 21Membre
    janvier 2023 modifié
    @augras, @fred
    j'ai eu une réponse du support de snipcart : comme entretemps, je suis repassé sur V11, ils ont regardé sur celle-là ; un truc bizarre : ils me disent que : "quand je consulte votre site en date d'aujourd'hui vous semblez avoir retiré Snipcart de votre site web" ; Or, j'ai rétabli la V11 intégralement avec tous les scripts et la mise au panier fonctionne. Peut-être une piste ?

    Je leur ai répondu et j'ai profité pour demander s'ils peuvent nous épauler sur ce problème pour mieux cerner l'origine (j'ai précisé le CMS, les versions, etc.) ; j'ai demandé s'ils avaient modifié de leur côté des configurations. J'attends réponse et je vous tiens au courant
    Clément
  • ClementLClementL Messages 21Membre
    Bonsoir,
    J'ai eu une réponse de Snipcart, intéressante, le problème du doublement de script est déjà présent dans la v11.5.13

    -> Vous avez encore, malgré avoir downgradé la version de votre site, le script d'installation de Snipcart en double. Il faudrait retirer le premier appel au cdn de snipcart. Le fait d'avoir deux fois le script de snipcart enregistre tous les évènements en double et cela peut causer plusieurs différents effets de bord.

    A vous lire
    Clément
  • fredfred Messages 1,704Administrateur
    Leur doc n’est pas limpide du tout, le script est chargé dans head et dans le corps de la page. 
    J’en reste là pour le moment. 
    The f....g boss
  • augrasaugras Messages 435Moderateur
    Est-ce que entre v11 et V12 il y a eu changement de version de TinyMCE ?
    Dans la cas de @ClementL qui n'utilise pas le module je ne pense pas que cela ait une importance, par contre moi avec le module certainement, car TinyMCE me dit Échec d'initialisation du plug-in : snipcart.
    ______________________________________________________
                 Logo de la boutique bi1sur.com
             https://bi1sur.com
  • fredfred Messages 1,704Administrateur
    En effet, l’éditeur de texte a changé de version, mais cela ne doit pas avoir, impact, le fichier configuration n’as pas changé à l’exception du nouveau jeu d’Icônes et de la pris en compte des langues étrangères.

    The f....g boss
  • ortesseortesse Messages 10Membre
    J'ai installé le module Snipcart (vers 1.4) idem jTinyMCE ne peut pas initialiser le module Snipcart
  • fredfred Messages 1,704Administrateur
    Quel rapport avec TinyMCE ???
    The f....g boss
Connectez-vous ou Inscrivez-vous pour répondre.