Meldingen over beveiligde en onbeveiligde items verhelpen

Het wil nog wel eens voorkomen dat er bij een bezoek aan een website met een SSL certificaat de browser waarschuwt voor onbeveiligde items. Dit wordt veroorzaakt door elementen die via http:// geladen worden in plaats van via https://. Onderstaand een aantal oplossingen.

Website aanpassen

Door ervoor te zorgen dat alle content van de website beveiligd wordt aangeleverd is het probleem aan de serverzijde helemaal te verhelpen. Om dit te realiseren moeten de HTTPS pagina's alleen beveiligde URL's bevatten. Dit kan als volgt:

  1. Download en gebruik een sniffer die HTTPS ondersteunt, en tevens toont welke bestanden vanuit de cache worden ingelezen. HttpWatch is een goed programma hiervoor.
  2. Ga naar de pagina waarin de melding zich voordoet en kies ervoor om de gemengde inhoud te mogen inzien.
  3. Zoek in de resultaten van de sniffer naar HTTP onderdelen; deze zijn de oorzaak van het probleem. In principe moet elke URL met HTTPS beginnen; zo niet moet dit worden aangepast.
  4. Als er in de eerste instantie geen HTTP onderdelen zichtbaar, probeer met Shift-Refresh de pagina opnieuw te laden (mogelijk werd het onderdeel uit de cache geladen).

Deze handleiding beschrijft het traceren van Mixed Content via Firefox en Chrome.

JavaScript als oorzaak

Deze meldingen kunnen ook veroorzaakt worden door stukjes JavaScript, waar een veelgebruikte techniek dit probleem veroorzaakt:

// Veroorzaakt foutmelding over gemengde inhoud in IE
document.write("<script id="__ie_onload" src="javascript:void(0)"></script>");
document.getElementById("__ie_onload").onreadystatechange = function()
{
     if (this.readyState == "complete") domReady();
};

Dit is een workaround die gebruikt wordt om een DOMContentLoaded gebeurtenis te emuleren binnen IE. De foutmelding komt doordat het javascript: protocol wordt gebruikt, ondanks dat er geen download plaatsvindt.

Om dit te herstellen dient men //: te gebruiken in het src-attribuut op dezelfde wijze als bijvoorbeeld jQuery en prototype. Dit geeft wel een (onschuldige) foutmelding in HttpWatch, maar verhelpt de foutmelding over gemengde inhoud:

// Verhelpt foutmelding over gemengde inhoud in IE
document.write("<script id="__ie_onload" src="//:"></script>");
document.getElementById("__ie_onload").onreadystatechange = function()
{
     if (this.readyState == "complete") domReady();
};

point up