Mes impressions sur le web, les standards et autres…


Misérable feature

RHAAAA !!!

Mhrr (<- raclement de gorge). Bon, je vous fais un topo. J’étais tranquillement en train de scripter un petit truc. Appel sur un serveur distant pour récupérer les en-têtes renvoyés ainsi que les données (Je précise pour la compréhension de la suite du billet que l’URI appellée renvoie une image PNG…). Précisément, je n’étais pas sùr du fonctionnement précis du deuxième argument de la fonction explode() de PHP (pour séparer les en-têtes des données propres dans la chaîne de caractères reçue). Ainsi :

// appel sur le serveur etc...

$data = '';
while( !@feof($fsock) )
{
    $data .= @fread($fsock, 512);
}
fclose($fsock);

list($headers, $data) = explode("\n\n", str_replace("\r\n", "\n", $data), 3);
list($response) = explode("\n", $headers, 2);

header('Content-Type: text/plain; charset=ISO-8859-1');
echo $headers;
echo "\n\n-----------------\n\n";
echo $data;
echo "\n\n-----------------\n\n";
echo $response;

Ainsi fait, je teste sous Firebird pour voir ce que contiennent mes variables. Voila t-y pas que Firebird me propose de télécharger le fichier ?! Éberlué, je reteste plusieurs fois, et encore et encore (comme un forcené cette fois) avant de me rappeller de la magnifique et indispensable fonctionnalité ajoutée dans les nocturnes précédent la version 0.8 (au jugé fin décembre). Merci mais non merci, j’en veux pas de cette fonctionnalité. Elle me casse les bu^Wnoisettes plus qu’autre chose cette fonctionnalité, bien que je sois conscient qu’elle ait une certaine utilité auprès de l’utilisateur lambda (merci au passage aux crétins qui sont pas fichus de configurer proprement leurs serveurs).

Bien, pour en venir au cœur de ce billet, quelqu’un dans l’assistance saurait-il par bonheur quelle option de configuration dois-je modifier dans mon firebird chéri (qui ne le restera pas s’il n’y a pas de solution) pour qu’il cesse ce comportement des plus agaçants ? Merci d’avance.

Au fait, ça va vous ? Je vous rassure, je ne suis pas mort, juste en manque d’inspiration et de temps ;-)

Bon, j’ai trouvé une première solution pour contourner ce problème. Utiliser plutôt :

header('Content-Type: text/plain; charset=ISO-8859-15');

Au lieu de cette ligne (avec ou sans le charset) :

header('Content-Type: text/plain; charset=ISO-8859-1');

Apparamment, Firefox prend des libertés uniquement si l’en-tête content-type correspond exactement aux réglages par défaut de la plupart des serveurs. Il me manque toujours la solution ultime qui désactive vraiment cette fonctionnalité dans Firefox

Vos réactions, opinions, insultes…

Rétroliens

Faire un rétrolien sur ce billet : [trackback]

Commentaires

1. De maurizSite

Si j'ai bien compris le problème vient du fait que Firefox télécharge un fichier envoyé avec le type text/plain ?

2. De Bobe

Oui, cela vient du fait que certains serveurs envoient les données avec le type mime text/plain à défaut d'autre chose. (les .rar par exemple des fois)
Ils ont donc implémenté cette fonctionnalité qui, dans le cas de données envoyées sous text/plain, part du principe que ce type est utilisé par défaut et vérifie si les données envoyées ne seraient pas peut-être autre chose que du texte simple.

Dans ce cas précis, une partie des données que je veux afficher est la chaîne représentant l'image elle même. (précisément, je veux vérifier ce que contient exactement la variable $data…)

3. De Darken • Site

Je te propose de faire une conversion pour les caractères non valides. Tu les remplaces par un autre caractère valide comme ? ou . et ça devrait aller. Les afficheurs/éditeurs hexadécimal utilisent souvent cette technique.

4. De Bobe

Ça ferait peut-être un peu long, et surtout ça ne fait que contourner assez lourdement le problème de départ :/

M’enfin il doit bien exister un booléen à modifier dans about:config quand même ?

5. De XanthorSite

"There is no such option. I would rather implement a "view in browser" option on the helper app dialog (which we need to do anyway) than waste time on a pref for this."
(Extrait du bug en question : http://bugzilla.mozilla.org/show_bug.(…) )

C'est pénible, moi aussi je souhaiterai eviter ce comportement contraire aux normes ;¬)

6. De Bobe

Rha, je m’insurge contre cette disgression intolérable par rapport aux normes ;-)
Bon bah tant pis, je vais devoir patienter jusqu’à qu’ils fassent quelque chose à ce niveau-là (j’en reviens toujours pas que ce comportement ne soit pas modifiable).

L’ajout de commentaires sur ce billet n’est pas/plus autorisé.