Détection JS côté serveur

Je sais : détecter l’activation ou non de JS côté serveur est une science tellement inexacte qu’il n’est pas raisonnable de s’y fier trop. Mais voilà, j’ai beau chercher, j’en ai absolument besoin. Alors j’ai cherché une méthode la plus fiable possible.

La problématique est la suivante : sur le site que j’ai en charge, nous utilisons un webservice pour récupérer les points de livraison les plus proches du client. Une requête asynchrone met à jour dynamiquement une liste de 10 points de retrait, parmi lesquels le client est invité à en choisir un. Tout irait bien si de (trop) nombreux clients n’avaient pas désactivé l’exécution des scripts sur leur navigateur… et comme la plupart ne comprennent pas de quoi il s’agit, cette désactivation n’est généralement pas intentionnelle et dûe à un logiciel antivirus ou autre logiciel poubelle de ce genre.

Ce que je souhaite, c’est afficher une liste de points de livraison d’après la base fournie par le prestataire, mais uniquement dans le cas où le client n’a pas JS activé. Parce qu’un webservice c’est quand même plus moderne et plus confortable. Je n’ai donc pas envie d’alourdir mon serveur MySQL simplement parce que 1% des clients ne sait pas que Javascript ne tourne pas chez lui.

La solution :

  • un cookie écrit en JS (ici avec jQuery):
  • immédiatement après avoir démarré la session, on sauvegarde la variable de session dans une autre et on l’écrase avec une nouvelle valeur :
  • dans mon contrôleur parent (celui dont héritent quasiment tous les autres, au moins sur le front) :

Oui, cela présente des défauts. Notamment, et pas des moindres, celui d’avoir un retard d’une page. Lors du premier affichage, le cookie n’existe pas encore (il vient d’être déposé, mais n’est pas encore lisible). Il convient donc de faire attention à l’utilisation de cette donnée ainsi récupérée.

En ce qui me concerne, il s’agit d’une étape intermédiaire dans la commande : le client a donc forcément déjà affiché une page (ne serait-ce que pour mettre au panier). Par ailleurs, dans le cas où l’utilisateur a effectivement JS activé et qu’il n’est pas détecté correctement (si le client, vicieux et perfide, a supprimé certains cookies mais pas tous), le seul désagrément que j’aurai sera une interrogation de ma base de données pour afficher des infos qui ne seront pas visible (puisque le webservice sera utilisé en lieu et place du formulaire “statique”).

De retour

Salut,

J’avais laissé ce blog à l’abandon pendant longtemps (depuis 2009 je crois). J’ai décidé de le remettre en ligne il y a quelques semaines et je me décide enfin à le remplir.

Je n’ai pas encore d’article prêt, mais j’ai une petite idée des sujets que j’aborderai en premier lieu. Il ne faut pas s’attendre à des publications fréquentes : je privilégie des articles complets à des billets nombreux…

Au programme prochainement, donc :

  • Mise en place d’un serveur de monitoring avec Zabbix
  • Mise en place d’un Proxy/DNS/DHCP sur Debian Squeeze
  • Mise en place d’un environnement de développement et de pré-production LANMP (Linux, Apache, Nginx, MySQL, PHP) sur Debian
  • De la documentation sur Kohana, un framework PHP5 très léger et redoutablement efficace

Il est probable aussi que je parle de SDSL et de VoIP et d’envoi de SMS depuis OVH.
Tout ceci est lié à mon nouvel emploi : j’apprends beaucoup de choses, ces temps-ci, concernant l’administration de serveurs et de l’infrastructure d’un site complet. Des sujets que je ne maîtrise pas, bien que je sois familier avec chacun d’eux. J’estime que c’est une bonne occasion de partager mes interrogations, mes galères, les solutions que j’adopte. Et si quelqu’un a des propositions à faire, je suis ouvert à la discussion et prêt à remettre en question mes choix.

À bientôt pour la suite !