IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

React Discussion :

Génération dynamique des balises Open Graph dans une SPA React avec backend Node.js/Express


Sujet :

React

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité de passage
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2025
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2025
    Messages : 2
    Par défaut Génération dynamique des balises Open Graph dans une SPA React avec backend Node.js/Express
    Bonjour à tous,

    Je développe un site avec un frontend React (SPA) et un backend Node.js/Express. Je souhaite générer dynamiquement des balises Open Graph (OG) sur une route spécifique /Evenement/:id afin d’avoir un bon aperçu lorsque je partage un événement sur les réseaux sociaux (Facebook, LinkedIn…)
    Ce que j’ai fait :
    Dans mon backend Express, j’ai une route /Evenement/:id qui détecte les bots (user-agent facebookexternalhit, twitterbot, linkedinbot) et renvoie une page HTML avec des balises OG spécifiques à l’événement.

    Si ce n’est pas un bot, je renvoie la page React SPA classique (index.html).

    Voici un extrait simplifié de mon backend :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    app.get('/Evenement/:id', async (req, res) => {
      const isCrawler = /facebookexternalhit|twitterbot|linkedinbot/i.test(req.headers['user-agent']);
      if (!isCrawler) {
        return res.sendFile(path.resolve(__dirname, 'build', 'index.html'));
      }
     
      const eventData = await Evenements.findById(req.params.id);
      const cleanDescription = eventData.texte.replace(/<[^>]*>/g, '').substring(0, 160);
      const imageUrl = `https://moncoach.tn/${eventData.photo}`;
      const pageUrl = `https://moncoach.tn/Evenement/${eventData._id}`;
     
      return res.send(`
        <html>
          <head>
            <meta property="og:title" content="${eventData.titre}" />
            <meta property="og:description" content="${cleanDescription}" />
            <meta property="og:image" content="${imageUrl}" />
            <meta property="og:url" content="${pageUrl}" />
          </head>
          <body></body>
        </html>
      `);
    });
    Mon problème :
    Quand je partage un lien /Evenement/:id sur Facebook ou LinkedIn, les balises OG affichées sont celles de ma page React SPA (index.html) et pas celles dynamiques envoyées par mon backend.

    Je précise que dans React, j’utilise aussi react-helmet pour gérer les balises meta côté client.

    Mes questions :

    Est-ce que le fait d’utiliser React Helmet côté client ne suffit pas pour que les bots récupèrent les bonnes balises OG ?

    Comment être sûr que ma route backend est bien prioritaire par rapport au serveur React SPA ?

    Y a-t-il des paramètres à vérifier côté proxy / serveur pour ne pas écraser ma réponse dynamique ?

    Quelle est la meilleure pratique pour gérer ces balises OG dynamiques dans une SPA React + backend Node.js ?

    Merci d’avance pour votre aide !

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    montrez-nous le débugage que vous avez fait avec la valeur de User-Agent.

  3. #3
    Invité de passage
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2025
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2025
    Messages : 2
    Par défaut
    user-agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer des balises HTML imbriquées les une dans les autres
    Par Ceubex dans le forum Général Java
    Réponses: 5
    Dernier message: 07/09/2012, 11h03
  2. Réponses: 19
    Dernier message: 08/11/2010, 10h06
  3. Concaténer des lignes d'enregistrements dans une colonne
    Par dany13 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 08/07/2005, 21h56
  4. Comment mettre des lignes de couleur dans une TCheckListBox ?
    Par Isa31 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 31/03/2005, 08h40
  5. Réponses: 3
    Dernier message: 12/06/2002, 21h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo