Aller au contenu principal
Version: 20 R5 BETA

WebServer

The WebServer class API allows you to start and monitor a web server for the main (host) application as well as each hosted component (see the Web Server object overview). This class is available from the 4D class store.

Objet Web Server

Web server objects are instantiated with the WEB Server command.

Leurs propriétés et fonctions sont les suivantes :

Sommaire

.accessKeyDefined : Boolean
true if an access key is defined in the settings of the web server
.certificateFolder : Text
dossier contenant les fichiers des certificats
.characterSet : Number
.characterSet : Text

.cipherSuite : Text
.CORSEnabled : Boolean
CORS (Cross-origin resource sharing) service status for the web server
.CORSSettings : Collection
list of allowed hosts and methods for the CORS service
.debugLog : Number
.defaultHomepage : Text
.HSTSEnabled : Boolean
.HSTSMaxAge : Number
.HTTPCompressionLevel : Number
.HTTPCompressionThreshold : Number
.HTTPEnabled : Boolean
.HTTPPort : Number
Numéro de port IP d'écoute pour HTTPS
.HTTPTrace : Boolean
activation of HTTP TRACE
.HTTPSEnabled : Boolean
.HTTPSPort : Number
.inactiveProcessTimeout : Number
Durée de vie (en minutes) des sessions legacy inactives
.inactiveSessionTimeout : Number
.IPAddressToListen : Text
.isRunning : Boolean
Statut démarré du serveur Web
.keepSession : Boolean
True if legacy sessions are enabled in the web server, False otherwise
.logRecording : Number
.maxConcurrentProcesses : Number
.maxRequestSize : Number
maximum size (in bytes) of incoming HTTP requests (POST) that the web server is allowed to process
.maxSessions : Number
maximum number of simultaneous legacy sessions
.minTLSVersion : Number
.name : Text
.openSSLVersion : Text
Version de la librairie OpenSSL utilisée
.perfectForwardSecrecy : Boolean
Disponibilité du PFS sur le serveur
.rootFolder : Text
.scalableSession : Boolean
True if scalable sessions are used in the web server, and False otherwise
.sessionCookieDomain : Text
.sessionCookieName : Text
.sessionCookiePath : Text
Champ "path" du cookie de session
.sessionCookieSameSite : Text
.sessionIPAddressValidation : Boolean
Validation de l'adresse IP des cookies de session

| .start() : Object
.start( settings : Object ) : Object

démarre le serveur Web server auquel elle est appliquée | | .stop()
stops the web server on which it is applied |

WEB Server

Historique
ReleaseModifications
18 R3Ajout
19prise en charge de .sessionCookieSameSite

WEB Server : 4D.WebServer
WEB Server( option : Integer ) : 4D.WebServer

ParamètresTypeDescription
optionInteger->Web server to get (default if omitted = Web server database)
Résultat4D.WebServer<-Objet Serveur Web

The WEB Server command returns the default Web server object, or the Web server object defined through the option parameter.

By default, if the option parameter is omitted, the command returns a reference to the Web server of the database, i.e. the default Web server. To designate the Web server to return, you can pass one of the following constants in the option parameter:

ConstanteValeurCommentaire
Web server database1Le serveur Web de la base courante (par défaut si omis)
Web server host database2Le serveur Web de la base hôte du composant
Web server receiving request3Le serveur Web ayant reçu la requête (serveur Web cible)

L'objet Web server retourné contient les valeurs courantes des propriétés du serveur Web.

Exemple

L'objet Web server retourné contient les valeurs courantes des propriétés du serveur Web.

  // Method of a component
var $hostWS : 4D.WebServer
$hostWS:=WEB Server(Web server host database)
If($hostWS.isRunning)
...
End if

WEB Server list

Historique
ReleaseModifications
18 R3Ajout

WEB Server list : Collection

ParamètresTypeDescription
RésultatCollection<-Collection des objets Web server disponibles

The WEB Server list command returns a collection of all Web server objects available in the 4D application.

Une application 4D peut contenir de un à plusieurs serveurs Web :

  • un serveur Web pour la base de données hôte (serveur Web par défaut)
  • un serveur Web pour chaque composant.

All available Web servers are returned by the WEB Server list command, whether they are actually running or not.

L'objet serveur Web par défaut est automatiquement chargé par 4D au démarrage. On the other hand, each component Web server that you want to use must be instantiated using the WEB Server command.

You can use the .name property of the Web server object to identify the project or component to which each Web server object in the list is attached.

Exemple

Nous voulons savoir combien de serveurs web en fonctionnement sont disponibles :

 var $wSList : Collection
var $vRun : Integer

$wSList:=WEB Server list
$vRun:=$wSList.countValues(True;"isRunning")
ALERT(String($vRun)+" web server(s) running on "+String($wSList.length)+" available.")

.accessKeyDefined

.accessKeyDefined : Boolean

The .accessKeyDefined property contains true if an access key is defined in the settings of the web server. Cette propriété est utilisée par le serveur web WebAdmin pour valider la configuration de sécurité de l'interface d'administration.

.certificateFolder

.certificateFolder : Text

Chemin du dossier contenant les fichiers des certificats. Chemin d'accès complet au format POSIX utilisant des filesystems. When using this property in the settings parameter of the .start() function, it can be a Folder object.

.characterSet

.characterSet : Number
.characterSet : Text

Jeu de caractères que le serveur Web doit utiliser pour communiquer avec les navigateurs se connectant à l'application. La valeur par défaut dépend de la langue du système d'exploitation. Can be a MIBEnum integer or a Name string, identifiers defined by IANA. Voici la liste des identifiants correspondant aux jeux de caractères pris en charge par le serveur Web de 4D :

  • 4 = ISO-8859-1
  • 12 = ISO-8859-9
  • 13 = ISO-8859-10
  • 17 = Shift-JIS
  • 2024 = Windows-31J
  • 2026 = Big5
  • 38 = euc-kr
  • 106 = UTF-8
  • 2250 = Windows-1250
  • 2251 = Windows-1251
  • 2253 = Windows-1253
  • 2255 = Windows-1255
  • 2256 = Windows-1256

.cipherSuite

.cipherSuite : Text

Liste de chiffrement utilisée pour le protocole sécurisé. Définit la priorité des algorithmes de chiffrement implémentés par le serveur Web de 4D. Peut être une séquence de chaînes séparées par des deux-points (par exemple "ECDHE-RSA-AES128 -..."). See the ciphers page on the OpenSSL site.

.CORSEnabled

.CORSEnabled : Boolean

The CORS (Cross-origin resource sharing) service status for the web server. Pour des raisons de sécurité, les requêtes "cross-domain" sont interdites par défaut au niveau du navigateur. When enabled (True), XHR calls (e.g. REST requests) from Web pages outside the domain can be allowed in your application (you need to define the list of allowed addresses in the CORS domain list, see CORSSettings below). Lorsqu'il est désactivé (False, par défaut), toutes les requêtes entre sites (cross site) envoyées avec CORS sont ignorées. Lorsqu'il est activé (True) et qu'un domaine ou une méthode non autorisé(e) envoie une requête entre sites, elle est rejetée avec une réponse d'erreur "403 - forbidden".

Par défaut : False (désactivé)

For more information about CORS, please refer to the Cross-origin resource sharing page on Wikipedia.

.CORSSettings

.CORSSettings : Collection

Contains the list of allowed hosts and methods for the CORS service (see CORSEnabled property). Each object must contain a host property and, optionally, a methods property:

  • host (text, mandatory): Domain name or IP address from where external pages are allowed to send data requests to the Server via CORS. Plusieurs attributs de domaine peuvent être ajoutés pour créer une liste blanche. If host is not present or empty, the object is ignored. Plusieurs syntaxes sont supportées :

  • methods (text, optional): Accepted HTTP method(s) for the corresponding CORS host. Séparez chaque méthode par un ";" (ex : "post;get"). If methods is empty, null, or undefined, all methods are enabled.

.debugLog

.debugLog : Number

Statut du fichier de log des requêtes HTTP (HTTPDebugLog_nn.txt, stocké dans le dossier "Logs" de l'application -- nn est le numéro de fichier).

  • 0 = désactivé
  • 1 = activé sans les parties du corps (la taille du corps est fournie dans ce cas)
  • 3 = activé avec les parties du corps en réponse uniquement
  • 5 = activé avec des parties du corps sur requête uniquement
  • 7 = activé avec des parties du corps en réponse et requête

.defaultHomepage

.defaultHomepage : Text

Nom de la page home par défaut ou "" pour ne pas envoyer de page home personnalisée.

.HSTSEnabled

.HSTSEnabled : Boolean

Statut du HTTP Strict Transport Security (HSTS). HSTS permet au serveur Web de déclarer que les navigateurs doivent interagir avec lui uniquement via des connexions HTTPS sécurisées. Les navigateurs enregistreront les informations HSTS la première fois qu'ils recevront une réponse du serveur Web, puis toutes les futures requêtes HTTP seront automatiquement transformées en requêtes HTTPS. The length of time this information is stored by the browser is specified with the HSTSMaxAge property. HSTS nécessite l'activation de HTTPS sur le serveur. HTTP doit également être activé pour permettre des connexions client initiales.

.HSTSMaxAge

.HSTSMaxAge : Number

Durée maximum (en secondes) pendant laquelle HSTS est actif pour chaque nouvelle connexion cliente. Ces informations sont stockées côté client pendant la durée spécifiée.

Valeur par défaut : 63072000 (2 ans).

.HTTPCompressionLevel

.HTTPCompressionLevel : Number

Niveau de compression pour tous les échanges HTTP compressés du serveur (requêtes clientes ou réponses du serveur). Ce sélecteur vous permet d'optimiser les échanges en priorisant soit la vitesse d'exécution (moins de compression), soit la quantité de compression (moins de vitesse).

Valeurs possibles :

  • 1 à 9 (où 1 correspond à la compression la plus rapide et 9 la plus élevée).
  • -1 = définir un compromis entre la vitesse et le taux de compression.

Valeurs possibles :

.HTTPCompressionThreshold

.HTTPCompressionThreshold : Number

Limite de la taille des requêtes (en octets) au-dessous de laquelle les échanges ne doivent pas être compressés. Ce paramètre est utile pour éviter de perdre du temps machine en compressant les petits échanges.

Seuil de compression par défaut = 1024 octets

.HTTPEnabled

.HTTPEnabled : Boolean

Statut du protocole HTTP.

.HTTPPort

.HTTPPort : Number

Statut du protocole HTTPS.

Par défaut = 80

.HTTPTrace

.HTTPTrace : Boolean

The activation of HTTP TRACE. For security reasons, by default the Web server rejects HTTP TRACE requests with an error 405. When enabled, the web server replies to HTTP TRACE requests with the request line, header, and body.

.HTTPSEnabled

.HTTPSEnabled : Boolean

Propriété en lecture seulement. Statut démarré du serveur Web.

.HTTPSPort

.HTTPSPort : Number

Numéro de port IP d'écoute pour HTTPS.

Par défaut = 443

.inactiveProcessTimeout

.inactiveProcessTimeout : Number

This property is not returned in scalable sessions mode.

Cette propriété n'est pas retournée en mode sessions évolutives.Durée de vie (en minutes) des sessions legacy inactives. At the end of the timeout, the process is killed on the server, the On Web Legacy Close Session database method is called, then the legacy session context is destroyed.

Par défaut = 480 minutes

.inactiveSessionTimeout

.inactiveSessionTimeout : Number

This property is not returned in scalable sessions mode.

Durée de vie (en minutes) des process de session legacy inactifs. À la fin de cette période, le cookie de session expire et n'est plus envoyé par le client HTTP.

Par défaut = 480 minutes

.IPAddressToListen

.IPAddressToListen : Text

Adresse IP sur laquelle le serveur Web recevra les requêtes HTTP. Par défaut, aucune adresse spécifique n'est définie. Les formats de chaîne IPv6 et IPv4 sont pris en charge.

.isRunning

.isRunning : Boolean

Read-only property

Vrai si les sessions legacy sont activées dans le serveur Web, sinon Faux.

.keepSession

.keepSession : Boolean

Contains True if legacy sessions are enabled in the web server, False otherwise.

Voir également

.scalableSession

.logRecording

.logRecording : Number

Mode d'enregistrement du log des requêtes (logweb.txt).

  • 0 = Ne pas enregistrer (par défaut)
  • 1 = Enregistrer au format CLF
  • 2 = Enregistrer au format DLF
  • 3 = Enregistrer au format ELF
  • 4 = Enregistrer au format WLF

.maxConcurrentProcesses

.maxConcurrentProcesses : Number

Nombre maximum de process web simultanés accepté par le serveur Web. Lorsque ce nombre (moins un) est atteint, 4D ne crée aucun autre process et retourne le statut HTTP 503 - Service Unavailable to all new requests.

Valeurs possibles : 500000 - 2147483648

Par défaut = 80

.maxRequestSize

.maxRequestSize : Number

Contains the maximum size (in bytes) of incoming HTTP requests (POST) that the web server is allowed to process. Passer la valeur maximale (2147483647) signifie qu'en pratique, aucune limite n'est définie. Cette limite est utilisée pour éviter la saturation du serveur Web en raison de requêtes entrantes trop volumineuses. Si une requête atteint cette limite, le serveur Web la rejette.

Valeurs possibles : 500000 - 2147483647

.maxSessions

.maxSessions : Number

This property is not returned in scalable sessions mode.

Contains the maximum number of simultaneous legacy sessions. When you reach the limit, the oldest legacy session is closed (and On Web Legacy Close Session database method is called) if the web server needs to create a new one. The number of simultaneous legacy sessions cannot exceed the total number of web processes (maxConcurrentProcesses property, 100 by default)

.minTLSVersion

.minTLSVersion : Number

Version minimum de TLS acceptée pour les connexions. Les tentatives de connexion de clients prenant en charge uniquement les versions inférieures au minimum seront rejetées.

Valeurs possibles :

  • 1 = TLSv1_0
  • 2 = TLSv1_1
  • 3 = TLSv1_2 (par défaut)
  • 4 = TLSv1_3

En cas de modification, le serveur doit être redémarré pour utiliser la nouvelle valeur.

.name

.name : Text

Read-only property

Propriété en lecture seulement. Disponibilité du PFS sur le serveur.

.openSSLVersion

.openSSLVersion : Text

Read-only property

Propriété en lecture seulement. Version de la librairie OpenSSL utilisée.

.perfectForwardSecrecy

.perfectForwardSecrecy : Boolean

Read-only property

La fonction .start() function démarre le serveur Web server auquel elle est appliquée, en utilisant les propriétés définies dans le paramètre optionnel settings.

.rootFolder

.rootFolder : Text

Chemin du dossier racine du serveur Web. Chemin d'accès complet au format POSIX utilisant des filesystems. When using this property in the settings parameter, it can be a Folder object.

.scalableSession

.scalableSession : Boolean

Contains True if scalable sessions are used in the web server, and False otherwise.

Voir également

.keepSession

.sessionCookieDomain

.sessionCookieDomain : Text

Champ "domain" du cookie de session. Utilisé pour contrôler la portée des cookies de session. Si vous définissez, par exemple, la valeur "/*.4d.fr" pour ce sélecteur, le client n'enverra un cookie que lorsque la demande est adressée au domaine ".4d.fr", ce qui exclut les serveurs hébergeant des données statiques externes.

.sessionCookieName

.sessionCookieName : Text

Nom du cookie utilisé pour stocker l'ID de session.

Read-only property

.sessionCookiePath

.sessionCookiePath : Text

Champ "path" du cookie de session. Utilisé pour contrôler la portée des cookies de session. Par exemple, si vous définissez la valeur "/4DACTION" pour ce sélecteur, le client enverra un cookie uniquement pour les requêtes dynamiques commençant par 4DACTION, et non pour les images, les pages statiques, etc.

.sessionCookieSameSite

Historique
ReleaseModifications
19Ajout

.sessionCookieSameSite : Text

Valeur "SameSite" du cookie de session. Valeurs possibles (avec constantes) :

ConstanteValeurDescription
Web SameSite Strict"Strict"Default value - Cookies are only sent in a first-party context
Web SameSite Lax"Lax"Les cookies sont également envoyés aux sous-requêtes intersites mais uniquement lorsque l'internaute navigue vers le site d'origine (i.e.
Web SameSite None"None"Les cookies sont envoyés dans tous les contextes, i.e. en réponse aux requêtes internes (first-party) et aux requêtes cross-origin.

See the Session Cookie SameSite description for detailed information.

.sessionIPAddressValidation

.sessionIPAddressValidation : Boolean

This property is not used in scalable sessions mode (there is no IP address validation).

Validation de l'adresse IP des cookies de session. Pour des raisons de sécurité, le serveur Web vérifie par défaut l'adresse IP de chaque requête contenant un cookie de session et la rejette si cette adresse ne correspond pas à l'adresse IP utilisée pour créer le cookie. Dans certaines applications spécifiques, vous souhaiterez peut-être désactiver cette validation et accepter les cookies de session, même lorsque leurs adresses IP ne correspondent pas. Par exemple, lorsque les appareils mobiles basculent entre les réseaux Wifi et 3G/4G, leur adresse IP change. Dans ce cas, vous pouvez permettre aux clients de continuer à utiliser leurs sessions Web même lorsque les adresses IP changent (ce paramétrage abaisse le niveau de sécurité de votre application).

.start()

Historique
ReleaseModifications
18 R3Ajout

.start() : Object
.start( settings : Object ) : Object

ParamètresTypeDescription
settingsObject->Paramètres du serveur web au démarrage
RésultatObject<-État du démarrage du serveur web

The .start() function starts the web server on which it is applied, using properties set in the optional settings object parameter.

The web server starts with default settings defined in the settings file of the project or (host database only) using the WEB SET OPTION command. However, using the settings parameter, you can define customized properties for the web server session.

All settings of Web Server objects can be customized, except read-only properties (.isRunning, .name, .openSSLVersion, .perfectForwardSecrecy, and [.sessionCookieName(#sessioncookiename)]).

Customized session settings will be reset when the .stop() function is called.

Objet retourné

La fonction retourne un objet décrivant le statut démarré du serveur Web. Cet objet peut avoir les propriétés suivantes :

PropriétéTypeDescription
successBooleanVrai si le serveur web a été correctement démarré, sinon Faux
errorsCollectionPile d'erreurs 4D (non retournée si le serveur web a démarré avec succès)
[].errCodeNumberCode d'erreur 4D
[].messageTextDescription de l'erreur 4D
[].componentSignatureTextSignature du composant interne qui a retourné l'erreur

Si le serveur Web a déjà été lancé, une erreur est générée.

Exemple

 var $settings;$result : Object
var $webServer : 4D.WebServer

$settings:=New object("HTTPPort";8080;"defaultHomepage";"myAdminHomepage.html")

$webServer:=WEB Server
$result:=$webServer.start($settings)
If($result.success)
//...
End if

.stop()

Historique
ReleaseModifications
18 R3Ajout

.stop()

ParamètresTypeDescription
Ne requiert aucun paramètre

The .stop() function stops the web server on which it is applied.

Si le serveur Web était lancé, toutes les connexions Web et tous les process Web sont fermés une fois que les requêtes actuellement traitées sont terminées. Si le serveur Web n'était pas démarré, la fonction ne fait rien.

This function resets the customized web settings defined for the session using the settings parameter of the .start() function, if any.

Exemple

Pour arrêter le serveur Web de la base :

 var $webServer : 4D.WebServer

$webServer:=WEB Server(Web server database)
$webServer.stop()