Rechercher : dans
Par :

Requête HTTP GET

Dernière réponse le 7 jui 2009 à 19:20:35 TiuSh, le 6 jui 2009 à 18:18:23 
 Signaler ce message aux modérateurs

Bonjour,

Je suis en train de développer un serveur Web embarqué simplifié. Pour cela j'ai déjà réussi à interpréter et répondre aux requêtes GET quand il s'agit de pages HTML. Mais lorsque j'essaie de répondre à une requête GET concernant une image, seul le nom de l'image s'affiche dans mon navigateur.
Voici la réponse que j'envoie au client:

Requête :
GET /img.jpg (...)

Réponse :
HTTP/1.0 200 OK
Content-Length: 3032
Content-Type: image/jpeg

[contenu de l'image]

Est ce que j'ai oublié quelquechose?

Merci!

Configuration: Linux
Firefox 3.0.11

Meilleures réponses pour « Requête HTTP GET » dans :
ThunderBird - Ouvrir les liens HTTP dans Firefox VoirThunderbird sous Windows Thunderbird sous GNU/Linux Remarques communes à Windows et GNU/Linux Rien de plus agaçant que de devoir copier / coller des liens HTTP depuis un courriel pour pouvoir les voir correctement ! Rien de plus agaçant...
[Debian] Apt-get : NO_PUBKEY / GPG error VoirLors de la mise à jour de la distribution Debian, il est possible que l'outil apt-get affiche un message d'erreur de genre : W: GPG error: ftp://ftp.fr.debian.org testing Release: The following signatures couldn't be verified because the public...
Installer un proxy-cache HTTP facilement (polipo) VoirInstaller un proxy-cache HTTP sur votre ordinateur a plusieurs avantages: Il permet de partager la connexion internet Le cache permet d'afficher plus rapidement les pages, même si vous ne partagez pas votre connexion. Il permet optionnellement...
Le protocole HTTP VoirIntroduction au protocole HTTP Le protocole HTTP (HyperText Transfer Protocol) est le protocole le plus utilisé sur Internet depuis 1990. La version 0.9 était uniquement destinée à transférer des données sur Internet (en particulier des pages Web...
ASP - L'objet Request VoirPrésentation de l'objet Request Le rôle de l'objet Request est de permettre de récupérer la requête HTTP envoyée par le client au serveur, c'est-à-dire qu'il permet en réalité de manipuler l'ensemble des informations envoyées par le navigateur du...
Sécurité - Les cookies VoirIntroduction aux cookies Quels sont ces étranges gateaux qu'un site web vous a sûrement déjà proposé? La plupart du temps, lorsqu'un serveur web propose un cookie, les utilisateurs ignorent ce terme et cliquent sur « OK » sans se préoccuper de...

1

mamiemando, le 6 jui 2009 à 19:10:19

Tu termines bien chaque fin de ligne par \r\n ?

Bonne chance

Répondre à mamiemando

2

TiuSh, le 7 jui 2009 à 00:40:06

Oui, sauf à la fin du contenu de l'image.
Pourtant le serveur transmet bien l'image, et le browser reçois très bien les pages web...
Je ne vois vraiment pas d'où peu venir le problème...

Merci quand même pour ta réponse mamiemando.

Répondre à TiuSh

3

le père, le 7 jui 2009 à 08:50:48

Bonjour

Tu as sans doute déjà vérifié tout ça, mais comme ça ne se bouscule pas pour te répondre...

Les en-têtes sont bien séparées des données par une ligne vide (c'est à dire dire deux fois \r\n après "image/jpeg" ?
Je trouve étrange que ta page affiche le nom de ton image, alors que ce nom ne figure pas dans les données de l'image (en tous cas pas dans l'image sur laquelle j'ai fait une vérification). As-tu un moyen (logiciel de capture de paquets par exemple) pour vérifier ce qui sort réellement de ton serveur (le contenu de l'image et pas son nom ) ?

Répondre à le père

4

mamiemando, le 7 jui 2009 à 10:41:03

Ton header http doit être envoyé en ANSI avec des \r\n en fin de ligne. Peut être qu'il manque des champs dans ton header nécessaire pour le transfert d'une image, il faudrait que tu vérifies sur le site du w3c.

Vérifie également que la taille que tu mets dans le header correspond à la taille de la séquence binaire associée à ton image. L'idéal serait que tu installes un serveur apache avec cette image et que tu la récupères avec un navigateur et que tu compares les échanges entre ton navigateur et entre les deux types de serveur.

Pour cela, essaye d'installer wireshark pour voir ce qui circule. Capture le trafic sur ta carte réseau. Lance une capture et récupères l'image avec ton navigateur. Tu devrais voir apparaître des paquets http. Sélectionne en un et fais clic droit, "follow TCP stream". Tu devrais rapidement voir ce qui cloche ;-)

Bonne chance

Répondre à mamiemando

5

TiuSh, le 7 jui 2009 à 13:55:52

@ "le père" : J'ai bien deux sauts de lignes entre le header et le contenu de mon image.
En fait, quand je dit qu'il n'y a que le nom de l'image qui apparait, je veux parler de l'adresse ou se trouve l'image ("http://192.168.0.4:10001/img.jpg"). Et pourtant j'ai bien vérifié ce qui sort du serveur en utilisant NetCat, cela ressemble bien aux données d'une image (bien que je ne sais pas comment vérifier s'il s'agit effectivement d'une image).

@ mamiemando : je viens d'installer WireShark, mais mon interface Wifi "wlan0" n'apparait pas dans les options de capture... Mais a priori il ne devrait pas y avoir d'erreur dans la taille de l'image puisque celle ci est "générée" sur la plateforme qui acceuille mon serveur, donc je connais sa taille exacte.

Edit: C'est bon j'ai trouvé le problème! Ça n'avait rien a voir avec les protocoles... En fait, lors de la compression de l'image, la plateforme en question rajoutait un header au début de l'image. En le supprimant, l'image est enfin apparue dans mon browser.

Merci pour votre aide!

Répondre à TiuSh

6

 mamiemando, le 7 jui 2009 à 19:20:35

Ok, merci pour le complément d'information et bonne continuation !

Répondre à mamiemando