lundi 18 juin 2012
Lier un fichier JavaScript d'un CDN avec HTTP ou HTTPS ?
Publié par Infinite Loop, à 21 h 40
3 commentaires
Voici un petit truc simple pour aujourd'hui. Disons que vous avez construit un site web en liant des librairies externes provenant d'un CDN comme Google Libraries API. Lors de la conception, vous avez lié dans le code les fichiers JavaScript en spécifiant le protocole dans l'URL de la source :
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
Du jour au lendemain, le client exprime le besoin que son site soit sécurité en utilisant un certificat SSL. Du coup, tous les liens absolus pointant vers le CDN sont à corriger.
Autrement, Chrome pourrait se plaindre que la page sécurisée tente d'utiliser du contenu qui ne l'est pas.
Message provenant de Developer Tools (l'équivalent de Firebug intégré à Chrome) :
[blocked] The page at https://code18.blogspot.com/test.php ran insecure content from http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js.
Parce que les clients ont tendance à paniquer lorsqu'ils voient des avertissements qui pourraient faire fuir leurs visiteurs, nous n'avons pas le choix d'effectuer la correction. Le développeur averti préférera prévenir ce genre de révision sur d'anciens projets qui lui fait perdre du temps précieux à chercher sur des torrents les derniers épisodes de The Big Bang Theory. C'est pourquoi il préférera omettre le protocole dans l'URL de la source :
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
Ainsi, si la page est demandée en HTTP, le script sera automatiquement ajusté pour prendre la ressource externe dans ce même protocole. À l'inverse, s'il y a un certificat SSL, la ressource externe sera chargée en HTTPS.
C'est compatible avec tous les navigateurs ? Je pense à IE6/7 notamment !
Selon le RFC, c'est supposé être compatible, à moins que le navigateur ne l'ait pas implémenté. Voir RFC 3986, section 4.2.
Quelqu'un sur StackOverflow a même confirmé que c'était compatible sur IE3 !
Hi !
Ca ne marche pas avec Firefox 13.0.1 sous Ubuntu 12.04..