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
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.
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
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
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é.
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.
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 /
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
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".
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.
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.
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é.
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.
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
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!
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
Powered by KENTIKA Atomic - © Kentika 2025 tous droits réservés - Mentions légales