Connexion à un serveur web

Suite à une discussion avec théo j’essaye de créer à partir de Snap! et du bloc{http://} une connexion avec un serveur web dans processing.
J’ai crée un bloc client de type reporter avec la suite de blocs suivante :smile:
report + http:// + join (localhost : 10002)

Coté serveur :
J’ai un script qui permet de voir si un client demande une connexion

Quand je clique sur le bloc Snap!
coté serveur j’obtiens :

127.0.0.1tGET / HTTP/1.1
Host: localhost:10002
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: fr,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Origin: null
Connection: keep-alive

ce qui me parait de bonne augure, par contre je ne sais pas comment récupérer une information transmise par le serveur ???
J’ai un objet Server myserver qui possède une méthode write() mais je ne comprends pas comment récupérer les données transmises par le serveur coté Snap et je trouve que la doc Snap! est très succinte sur ce point !

J’ai testé la connexion client en java avec mon navigateur firefox et la tout fonctionne. Reste plus qu’à voir avec Snap!

C’est probablement un problème de CORS. Une sécurité de ton navigateur qui empêche de faire des requêtes sur un serveur web à moins qu’il l’ai explicitement autorisé.

Tu peux t’inspirer ce cet exemple et rajouter dans HTTP_HEADER

 Access-Control-Allow-Origin: *

Quand j’implémente en Java le système server/client tout fonctionne, Si je me connecte avec mon navigateur firefox avec localhost:port je récupère bien les informations envoyées par le serveur.

Cela n’a rien changé
Je vais peut-être poser une question bête mais quand j’utilise le bloc Snap! http://localhost:port est ce que c’est la même chose que d’utiliser la barre url du navigateur ?

Je n’ai pas été clair :

Il faudrait plutôt écrire “une sécurité qui empêche le code javascript exécute dans ton navigateur de faire des requêtes sur un serveur web à moins qu’il l’ai explicitement autorisé”.

Tu peux désactiver cette fonctionnalité côté navigateur avec des extensions.

Bonjour Christophe,

Je vais peut-être poser une question bête mais quand j’utilise le bloc Snap! http://localhost:port est ce que c’est la même chose que d’utiliser la barre url du navigateur ?

La question n’est pas bête.
L’accès à une ressource web depuis la barre du navigateur ou par des requêtes xhr ne revient pas au même.
Snap! utilise des requêtes cross domain qui nécessitent que le serveur web autorise l’accès à ses ressources.

Ce mécanisme de Cross Origin resource sharing est décrit ici.

Vous trouverez aussi plus d’informations sur la page http://enable-cors.org.

Le snippet que vous a fourni @Theo autorise les requêtes entrantes ne venant pas du même domaine, et devrait résoudre votre problème.

Ok merci à tous les deux. Avec un peu de lecture, je commence à comprendre ce qui se passe même s’il reste de nombreuses zones obscures.
J’ai enfin réussi à faire communiquer Snap! avec mon serveur web, :grinning:
Pour ceux que cela pourrait intéresser voila l’entête HTTP

  myServer.write("HTTP/1.0 200 OK\n");
  myServer.write("Content-Type : text/html\n");
  myServer.write("Access-Control-Allow-Origin: *\n\n");

J’ai un peu galéré sur les \n ou \n\n car si ils sont mal placés le résultat est différent !!! Maintenant j’ai compris pourquoi mais quand on est novice dans ce domaine pas facile …:flushed: