0

6 La navigation dans le manuel de Kentika est réservée aux utilisateurs identifiés



Structure d'une URL adressée au serveur http

Structure d'une URL

Préambule

L'URL (Uniform Resource Locator) est le moyen qu'a un client web pour adresser une demande à un serveur http. Ce dernier doit être en mesure de savoir exactement ce que le client demande ou quelle action il veut que le serveur exécute.

URL vs entête http

Lorsqu'un client adresse une URL à un serveur, il pense qu'il lui adresse ceci :

http://192.168.0.20/Main.htm

En fait, le serveur http reçoit de la part du client une entête http comme ceci :

GET /Main.htm HTTP/1.1

Host: 192.168.0.20

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.11) Gecko/20071127 prout Firefox/2.0.0.11

Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Referer: http://192.168.0.20/Record.htm?idlist=28&record=19113083124919312659

Cookie: ALEX_IDENT_BSUFOBX=433751430702 $12/11/2007

If-Modified-Since: Mon, 3 Dec 2007 14:25:33 GMT

Structure d'une URL, vue du client

Une URL saisie directement dans un navigateur est composée de 1 à 5 éléments. Analysons l'URL suivante :

http://www.a-ressources.net/ListRecord.htm?list=folder&folder=31

1 - Protocole

http://

Autre valeur possible : https:// pour les connexion sécurisées

Vous trouverez également comme première partie d'une URL : ftp:// mais ce protocole n'est pas supporté.

2 - Serveur

www.a-ressources.net

Le serveur (ou host) doit être unique vu du poste client. Distinguons ici le cas d'un serveur internet et le cas d'un serveur intranet

Serveur Internet

Une adresse de serveur internet a toujours à la base une adresse IP (unique dans le monde). Cependant, afin d'éviter d'avoir à se rappeler de séquences de numéros, on utilise des noms de domaines. Ces derniers renvoient ensuite (grâce à des DNS ou Domain Name System) .

Plusieurs noms de domaines peuvent renvoyer à la même adresse IP.

Si vous souhaitez dans votre application fournir un résultat différent en fonction du domaine appelé par l'utilisateur, il suffit de tester la variable THost dans un script dont le nom doit être spécifié dans le paramètre "W_ST".

Exemple : AScript_Filtrer_HOST

Si (THost="@commercial@")

http_setparam ("context";"2")

Fin de si

Force le contexte à la valeur 2 si l'utilisateur sollicite le nom de domaine contenant "commercial".

Serveur Intranet

Une adresse d'un serveur Intranet est unique sur un réseau local mais n'est vue que de ce réseau local.

Exemple :

http://192.168.0.18

Serveur Internet derrière un routeur

Cas d'une déclaration dynamique de serveur web. Ce cas est un peu particulier car l'adresse internet du serveur est en fait l'adresse du routeur si vous avez demandé à ce que les appels entrant soient reroutés sur un serveur intranet.

Exemple

Votre base a pour signature : MABIBLIO

Votre routeur autorise les appels entrant sur le port 80 et les redirige automatiquement sur la machine serveur intranet (exemple : 192.168.0.18)

Vous avez déposé un nom de domaine : www.mabasechezmoi.com

Vous avez indiqué à votre fournisseur de nom de domaine de procéder à une redirection à l'adresse suivante : http://www.a-ressources.net/a-domain.htm?base=MABIBLIO

Lors du lancement de votre application, une connexion au centre de ressources permet à ce dernier de capturer votre adresse IP (en fait, celle de votre routeur, exemple : http://90.48.135.187/)

Lorsqu'un internaute tape dans son navigateur "http://www.mabasechezmoi.com ", il est redirigé sur l'URL "http://www.a-ressources.net/a-domain.htm?base=MABIBLIO ". Le centre de ressource redirige alors vers l'adresse internet du routeur (http://90.48.135.187 ) qui lui même redirige vers le serveur intranet (http://192.168.0.18 ).

Dans ce type de configuration, l'adresse IP du routeur étant affecté dynamiquement par le fournisseur d'accès, elle est sujet à modification (quotidienne dans le cas d'orange), un signet n'est valable qu'une durée très limitée. Cette solution est très intéressante d'un point de vue économique mais présente une limitation d'utilisation.

3 - Numéro de port

Une adresse IP permet d'accéder à une machine, un numéro de port à une application. Le numéro de port par défaut du protocle http est le 80 (et dans ce cas, n'est pas précisé). Ce numéro peut être différent, il devra alors être spécifié dans l'URL (séparé du nom de domaine ou l'adresse IP par :).

Exemple : http://192.168.0.18:8080 /

4 - Page

Traditionnellement, un serveur http servait une page située dans un répertoire. Aujourd'hui, si ce mécanisme est toujours en fonctionnement, il a été largement détourné et, dans le cas d'une base de données, correspond exceptionnellement à une page existant physiquement sous forme d'un fichier sur disque. Dans le cas du présent logiciel, cela est soit une ressource web, soit un fichier situé dans le répertoire "WebFolder".

http://www.a-ressources.net/ListRecord.htm ?list=folder&folder=31

5 - Paramètres

Lorsque l'application analyse l'URL contenant "ListRecord.htm", elle sait qu'elle doit utiliser cette ressource pour fabriquer dynamiquement un résultat. Cependant, cette ressource n'est qu'un "moule" dans lequel vont être placées des données. Pour savoir quelles données devront être placées, l'application doit analyser les paramètres.

http://www.a-ressources.net/ListRecord.htm?list =folder &folder =31

Deux paramètres sont joints à l'URL, le paramètre "list" qui a la valeur "folder" et la paramètre "folder" qui a la valeur "31".

Méthode GET vs POST

Dans un souci de simplification, nous dirons qu'une méthode GET est utilisée pour obtenir une page, une méthode POST est utilisée pour envoyer des données (exemple : un formulaire ou un fichier).

Lorsqu'un internaute active un lien, il provoque l'appel à une URL avec une méthode GET. Lorsqu'il utilise un formulaire, ce peut être soit une méthode GET, soit une méthode POST. Lorsqu'il envoie un fichier (cas de l'archivage par exemple), c'est toujours une méthode POST. Une URL en méthode GET est limitée à 2048 caractères (avec IE).

Si vous êtes amené à coder un formulaire html, vous devrez vous poser la question de la méthode. Voici quelques points de repères :

GET

Tous les arguments figurent en clair dans l'URL dans le navigateur.

Possibilité de mettre un signet et de copier / coller le lien.

POST

Non limité en longueur.

Permet d'envoyer un fichier.

Analyse de l'entête http

L'analyse est prise en charge en grande partie par le logiciel, les informations ci-après sont donc fournies à titre d'information.

Le serveur, qui ne connaît pas la notion d'URL reçoit toutes les informations dans l'entête http. Dans le cas d'une méthode GET, l'ensemble des paramètres est passé en première ligne de l'entête. Dans le cas d'une méthode POST, les paramètres sont transmis après les éléments de l'entête et séparés de ces derniers par un double-retour.

Identification de l'utilisateur

Première étape : qui sollicite le serveur. Lorsqu'un utilisateur se connecte, après vérification de son identité, le serveur lui adresse un cookie, ce dernier est ensuite systématiquement renvoyé par le navigateur à chaque demande d'une nouvelle URL :

Cookie: ALEX_IDENT_BSUFOBX=433751430702 $12/11/2007

Ce dernier est composé d'une chaine fixe "ALEX_IDENT_" de la signature de la base "BSUFOBX" de l'identifiant codé de l'utilisateur "433751430702" ainsi que la date à laquelle le cookie a été envoyé à l'utilisateur "$12/11/2007". Dès que l'utilisateur est reconnu, son contexte est calculé ou chargé.

Identification de la Page demandée et de la méthode

Ces deux informations se trouvent sur la première ligne de l'entête. Ceci est pris en charge directement par le logiciel. Dans le cas d'une méthode POST avec transmission de fichiers, ces derniers sont stockés dans le dossier temporaire.

Identification du Host

Si votre application est accessible en internet et intranet et que vous désirez différencier les accès, il vous suffit de tester la valeur de la variable THost

Début de l'entête d'une requête reçue via internet :

GET /Main.htm HTTP/1.1

Host: 90.48.135.187

...

et la même requête via intranet

GET /Main.htm HTTP/1.1

Host: 192.168.0.20

...

Un script permettant d'effectuer des traitement différents suivant le host appelé pourrait contenir le code suivant :

Au cas ou

:(THost="192.168.0.20")

TCom:="Bienvenue sur le site INTRANET"

:(THost="90.48.135.187")

TCom:="Bienvenue sur le site INTERNET"

fin de cas

Paramètres

Que ce soit en méthode GET ou en méthode POST, les paramètres sont lus via la même méthode : http_getparam. L'entête http est entièrement découpée et disponible dans le dossier TThttpParams

Exemple

Pour faire appararaître le contenu de l'entête (y compris l'ensemble des paramètres en cas de méthode POST) pour des besoins de mise au point, il suffit de mettre en place ce qui suit au sein d'une ressource web.

!4D=begin;TThttpParams!

!4D=insert;TThttpParams{TThttpParams}!

<br>

!4D=end;TThttpParams!

Récupération de fichiers envoyés en méthode POST

En général, ces derniers sont envoyés dans le cadre de l'archivage d'un fichier et sont donc pris en charge directement par l'application. Il se peut cependant que, dans une application particulière, il y ait besoin de récupérer ces fichiers. Dans ce cas, vous pouvez vous inspirer de l'exemple ci-dessous.

Tx:=<>TPathTempAR+"WEBPOST"+<>sep+"Stream"+Chaine(eStream)

Si (Tester chemin acces(Tx)=Est un répertoire )

LISTE DES DOCUMENTS(Tx;TTx)

Ce2:=Taille tableau(TTx)

Boucle (Ce1;1;Ce2)

TTx{Ce1}:=Tx+TTx{Ce1}

...

Fin de boucle

Fin de si