Mon hébergeur a refusé de m'aider avec ceci, donc je viens ici aux gens sages pour de l'aide sur le "débogage boîte noire". Voici une version modifiée de ce que je leur ai envoyé:Pourquoi Apache décoderait-elle ma chaîne de requête?
J'ai deux (entre autres) domaines à dreamhost:
1) thefigtrees.net 2) shouldivoteformccain.com
J'ai remarqué aujourd'hui que lorsque J'héberge un script CGI sur # 1, que lorsque le script CGI s'exécute, la chaîne de requête HTTP GET transmise comme la variable d'environnement QUERY_STRING a déjà été décodée par l'URL. Ceci est un problème car cela signifie qu'une bibliothèque CGI standard (telle que CGI.pm de Perl) va essayer de diviser sur des esperluettes, puis de décoder la chaîne elle-même. Il y a deux problèmes potentiels avec ceci:
1) la chaîne est décodé deux fois, donc si une valeur est soumise au script comme « % 2525 », il finira par être traitée comme « % » (décodé deux fois) plutôt que « % 25 » (décodé une fois)
2) (plus fréquent) s'il y a une esperluette dans une valeur soumise, il obtiendra (correctement) soumis en% 26, mais la QUERY_STRING env. variable aura déjà décodé dans un "&" et alors la bibliothèque CGI va incorrectement diviser la chaîne de requête à cette perluète. C'est un gros problème! Le script http://thefigtrees.net/test.cgi le démontre. Il fait écho aux variables d'environnement avec lesquelles il est appelé. Navigation dans un navigateur pour:
http://thefigtrees.net/lee/test.cgi?x=y%26z
Vous pouvez voir que REQUEST_URI contient correctement x = y% 26Z (non codée), mais que QUERY_STRING l'a déjà décodé à x = y z &. Si je répète le test au domaine n ° 2 ( http://www.shouldivoteformccain.com/test.cgi?x=y%26z), je vois que le QUERY_STRING reste non décodé, de sorte que CGI.pm se sépare et décode correctement .
J'ai essayé de désactiver mes fichiers .htaccess sur les deux pour m'assurer que ce n'était pas le problème , et je n'ai vu aucune différence. Est-ce que quelqu'un pourrait spéculer sur les causes potentielles de ceci, puisque mon hébergeur ne semble pas vouloir m'aider?
grâce, Lee