mardi 30 avril 2013

fiddler debugging

tout commence avec le genre de bug impossible :
un appel d'une page sur IE génère une alerte "mixed content" c'est à dire
"cette page contient des éléments sécurisés et des éléments non sécurisés"
uniquement sur IE (sur FF et GC c'est ok)
On analyse les requêtes avec IE developper toolbar, et on voit pas de http, tout est bien en https.
Mystère.
Et pour corser le tout ça n'arrive qu'en prod et on n'a pas la main sur les serveurs pour modifier le source pour des tests. Il y a une centaine de fichiers appelés (png css js etc).
Bon, IE toolbar n'est pas assez évolué, j'utilise enfin fiddler2 :
- ça permet de voir sur quel fichier ça bloque , mais bon là on trouve pas, c'est dans du javascript
- en utilisant le remplacement d'url + regexp on peut changer tous les chargements de *.png en blank, ou *.gif *.js *.css etc
- avec le plugin http://fiddlerurlreplace.codeplex.com/ bulk replace on peut éliminer plein de fichiers, et arriver à une erreur avec uniquement 3 fichiers.
- ensuite, on peut dans fiddler modifier les contenus, ce qui permet de modifier le javascript chargé pour affiner encore d'où vient l'erreur. menu "custom rules" , on peut éditer la fonction OnBeforeResponse :
ici par exemple je remplace url('xxx') en url('https://zzz/xxx')

static function OnBeforeResponse(oSession: Session)
{
if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "javascript")) { //filtrage eventuel
  oSession.utilDecodeResponse();
  oBody = oBody.replace(/"url\(\\"\/" \+ getZZAppName/gi,
                 '"url(\\"" + window.location.protocol + "://" + '+'window.location.host + '+
                 '((window.location.port)?":"+window.location.port:"") + "/" + '+'getZZAppName');
  oSession.utilSetResponseBody('oBody');
 }

le bug IE provenait de
http://support.microsoft.com/kb/925014
http://www.pelagodesign.com/blog/2007/10/30/ie7-removechild-and-ssl/


Aucun commentaire: