0

Nous travaillons avec MVC (4,5) et certains de nos clients nous demandent d'implémenter du code google analytics/facebook pixels. Nous ne sommes pas experts en SEO et nous ne prenons que le code JS fourni par nos clients et nous l'implémentons sur leur site Web que nous hébergeons (après un examen rapide et une inspection du code). Maintenant, nous voulons automatiser le flux, nous voulons donc créer une sorte de page CMS que l'administrateur (notre client) peut publier un bloc de script (son propre code d'analyse) sur nos serveurs pour l'inspection automatique et la mise en œuvre sur vues pertinentes (mvc .net).Bonne pratique pour obtenir un bloc de script JS de l'entrée de l'utilisateur?

J'ai pensé à deux façons différentes: 1. Utilisez le téléchargement de fichiers de txt/js et parsez-le en chaîne avec HttpPostedFileBase et BinaryReader. 2. Récupérez le script sous forme de texte à partir d'un formulaire de saisie.

En ce qui concerne les affaires, nous préférons la méthode 2. mais cela semble beaucoup plus dangereux. Je devrai contourner la validation de demande de MVC afin de laisser l'utilisateur passer au contrôleur "code potentiellement dangereux".

Y a-t-il un autre moyen qui me manque? Quelle est la meilleure pratique pour obtenir ce type de contribution de la part des utilisateurs? Je suis sûr que cela a déjà été fait.

Ceci est mon code pour la méthode # 1:

[HttpPost] 
public ActionResult AnalitycsCMS(HttpPostedFileBase scriptFile) 
{ 
    if (scriptFile != null && scriptFile.ContentLength > 0) 
    { 
     // Validate through List of valid extentions and type (strings) 
     bool isValidExtention = extentions.Any(item => scriptFile.FileName.EndsWith(item, StringComparison.OrdinalIgnoreCase)); 
     bool isValidType = types.Any(item => scriptFile.ContentType.EndsWith(item, StringComparison.OrdinalIgnoreCase)); 

     if (isValidExtention && isValidType) 
     { 
      // Read bytes from http input stream 
      BinaryReader br = new BinaryReader(scriptFile.InputStream); 
      byte[] data = br.ReadBytes(scriptFile.ContentLength); 

      string result = System.Text.Encoding.UTF8.GetString(data); 
      ViewBag.ScriptFile = result; 
     } 
    } 
    return View(); 
} 
+0

Avez-vous envisagé d'utiliser quelque chose comme [Google Gestionnaire de balises] (https://www.google.com/analytics/tag-manager/)? – Stu

+0

@Stu tiens à expliquer un peu plus comment cela peut-il m'aider à atteindre mon objectif? –

+0

Il semble que vous souhaitiez ajouter un code spécifique au DOM pour exécuter le suivi et le marquage (par exemple, Google Analytics ou le ciblage Facebook, etc.?). Si c'est le cas, c'est exactement ce que fait GTM, ce qui signifie que vous n'avez pas à fournir de solution interne. – Stu

Répondre

0

J'ai eu un problème similaire avec un CMS j'ai travaillé avec et les clients finissent toujours par l'ajout de code JS qui sera (100%) casser votre code puis ils vont déposer des rapports de bogues sur votre système. Ils vont ajouter des bibliothèques qui vont interférer avec vos bibliothèques, des extraits de code qui vont directement interférer avec le code, donc je vous encourage fortement à éviter cela. Si vous le devez vraiment, je recommanderais Google Tag Manager en tant que personne dans les commentaires déjà mentionnés ou je m'assurerais que le code JS est ajouté à un espace de nom et qu'il est enveloppé d'autre chose pour éviter les conflits de variables. En outre, ajoutez un message près de la zone de saisie de texte dont les bibliothèques ont été chargées afin qu'elles ne les rajoutent pas à nouveau.