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.
Objeto servidor web
Web server objects are instantiated with the WEB Server
command.
Ofrecen las siguientes propiedades y funciones:
Resumen
.accessKeyDefined : Boolean true if an access key is defined in the settings of the web server |
.certificateFolder : Text donde se encuentran los archivos de los certificados |
.characterSet : Number .characterSet : Text conjunto de caracteres que el Servidor Web 4D debe utilizar para comunicarse con los navegadores que se conectan a la aplicación |
.cipherSuite : Text utilizada para el protocolo seguro |
.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 estado del archivo de registro de peticiones HTTP |
.defaultHomepage : Text nombre de la página de inicio por defecto |
.HSTSEnabled : Boolean HTTP Strict Transport Security (HSTS) |
.HSTSMaxAge : Number máximo de tiempo (en segundos) que HSTS está activo para cada nueva conexión cliente |
.HTTPCompressionLevel : Number nivel de compresión para todos los intercambios HTTP comprimidos para el servidor HTTP 4D (peticiones del cliente o respuestas del servidor) |
.HTTPCompressionThreshold : Number umbral de tamaño (bytes) para las solicitudes por debajo del cual los intercambios no deben ser comprimidos |
.HTTPEnabled : Boolean HTTP |
.HTTPPort : Number número de puerto IP de escucha para HTTP |
.HTTPTrace : Boolean activation of HTTP TRACE |
.HTTPSEnabled : Boolean |
.HTTPSPort : Number número de puerto IP de escucha para HTTPS |
.inactiveProcessTimeout : Number duración (en minutos) de los procesos de sesión heredados inactivos |
.inactiveSessionTimeout : Number duración (en minutos) de las sesiones heredadas inactivas (duración establecida en la cookie) |
.IPAddressToListen : Text dirección IP en la que el servidor web 4D recibirá las peticiones HTTP |
.isRunning : Boolean estado de ejecución del servidor web |
.keepSession : BooleanTrue if legacy sessions are enabled in the web server, False otherwise |
.logRecording : Number log (logweb.txt) |
.maxConcurrentProcesses : Number número máximo de procesos web concurrentes que soporta el servidor web |
.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 versión TLS mínima aceptada para las conexiones |
.name : Text |
.openSSLVersion : Text versión de la librería OpenSSL utilizada |
.perfectForwardSecrecy : Boolean PFS en el servidor |
.rootFolder : Text ruta de la carpeta raíz del servidor web |
.scalableSession : BooleanTrue if scalable sessions are used in the web server, and False otherwise |
.sessionCookieDomain : Text "domain" de la cookie de sesión |
.sessionCookieName : Text nombre de la cookie utilizada para almacenar el ID de sesión |
.sessionCookiePath : Text "path" de la cookie de sesión |
.sessionCookieSameSite : Text "SameSite" |
.sessionIPAddressValidation : Boolean validación de la dirección IP para las cookies de sesión |
| .start() : Object
.start( settings : Object ) : Object
starts the web server on which it is applied |
| .stop()
detiene el servidor web sobre el que se aplica |
WEB Server
Historia
Lanzamiento | Modificaciones |
---|---|
18 R3 | Añadidos |
19 | soporte de .sessionCookieSameSite |
WEB Server : 4D.WebServer
WEB Server( option : Integer ) : 4D.WebServer
Parámetros | Tipo | Descripción | |
---|---|---|---|
option | Integer | -> | Web server to get (default if omitted = Web server database ) |
Result | 4D.WebServer | <- | Objeto servidor 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:
Constante | Valor | Comentario |
---|---|---|
Web server database | 1 | Servidor web de la base actual (por defecto si se omite) |
Web server host database | 2 | Servidor web de la base local de un componente |
Web server receiving request | 3 | Servidor web que ha recibido la solicitud (servidor web objetivo) |
El objeto servidor web devuelto contiene los valores actuales de las propiedades del servidor web.
Ejemplo
El objeto servidor web devuelto contiene los valores actuales de las propiedades del servidor web.
// Method of a component
var $hostWS : 4D.WebServer
$hostWS:=WEB Server(Web server host database)
If($hostWS.isRunning)
...
End if
WEB Server list
Historia
Lanzamiento | Modificaciones |
---|---|
18 R3 | Añadidos |
WEB Server list : Collection
Parámetros | Tipo | Descripción | |
---|---|---|---|
Result | Collection | <- | Colección de los objetos del servidor web disponibles |
The WEB Server list
command returns a collection of all Web server objects available in the 4D application.
Queremos saber cuántos servidores web en funcionamiento hay disponibles:
- un servidor web para la base de datos del host (servidor web por defecto)
- un servidor web para cada componente.
All available Web servers are returned by the WEB Server list
command, whether they are actually running or not.
El objeto servidor web por defecto es cargado automáticamente por 4D al inicio. 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.
Ejemplo
Puede utilizar la propiedad .name del objeto servidor web para identificar el proyecto o componente al que está unido cada objeto servidor web de la lista.
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. Esta propiedad es utilizada por el servidor web de WebAdmin para validar la configuración de seguridad de la interfaz de administración.
.certificateFolder
.certificateFolder : Text
Ruta de la carpeta donde se encuentran los archivos de los certificados. La ruta se formatea en la ruta completa POSIX utilizando filesystems. When using this property in the settings
parameter of the .start()
function, it can be a Folder
object.
.characterSet
.characterSet : Number
.characterSet : Text
El conjunto de caracteres que el Servidor Web 4D debe utilizar para comunicarse con los navegadores que se conectan a la aplicación. El valor por defecto depende del lenguaje del sistema operativo. Can be a MIBEnum integer or a Name string, identifiers defined by IANA. Aquí está la lista de identificadores correspondientes a los conjuntos de caracteres soportados por el servidor web 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
La lista de cifrado utilizada para el protocolo seguro. Define la prioridad de los algoritmos de cifrado implementados por el servidor web de 4D. Puede ser una secuencia de cadenas separadas por dos puntos (por ejemplo "ECDHE-RSA-AES128-..."). Ver la página de cifrados en el sitio OpenSSL.
.CORSEnabled
.CORSEnabled : Boolean
The CORS (Cross-origin resource sharing) service status for the web server. Por razones de seguridad, las peticiones "cross-domain" están prohibidas por defecto a nivel del navegador. 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). Cuando se desactiva (False, por defecto), se ignoran todas las peticiones cruzadas enviadas con CORS. Cuando se activa (True) y un dominio o método no permitido envía una solicitud de sitio cruzado, se rechaza con una respuesta de error "403 - prohibido".
Por defecto: False (desactivado)
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. Se pueden añadir múltiples atributos de dominio para crear una lista blanca. If host is not present or empty, the object is ignored. Se soportan varias sintaxis:
- 192.168.5.17:8081
- 192.168.5.17
- 192.168.*
- 192.168.*:8081
- http://192.168.5.17:8081
- http://*.myDomain.com
- http://myProject.myDomain.com
- *.myDomain.com
- myProject.myDomain.com
- *
methods (text, optional): Accepted HTTP method(s) for the corresponding CORS host. Separe cada método con un ";" (por ejemplo: "post;get"). If methods is empty, null, or undefined, all methods are enabled.
.debugLog
.debugLog : Number
El estado del archivo de registro de peticiones HTTP (HTTPDebugLog_nn.txt, almacenado en la carpeta "Logs" de la aplicación -- nn es el número de archivo).
- 0 = desactivado
- 1 = activado sin partes del cuerpo (en este caso se suministra el tamaño del cuerpo)
- 3 = activado con las partes del cuerpo en respuesta únicamente
- 5 = activado con las partes del cuerpo en petición únicamente
- 7 = activado con las partes del cuerpo en respuesta y petición
.defaultHomepage
.defaultHomepage : Text
El nombre de la página de inicio por defecto o "" para no enviar la página de inicio personalizada.
.HSTSEnabled
.HSTSEnabled : Boolean
El estado HTTP Strict Transport Security (HSTS). HSTS permite al servidor web declarar que los navegadores sólo deben interactuar con él a través de conexiones HTTPS seguras. Los navegadores registrarán la información HSTS la primera vez que reciban una respuesta del servidor web, luego cualquier solicitud HTTP futura se transformará automáticamente en solicitudes HTTPS. The length of time this information is stored by the browser is specified with the HSTSMaxAge
property. HSTS requiere que HTTPS esté activado en el servidor. HTTP también debe estar activado para permitir las conexiones cliente iniciales.
.HSTSMaxAge
.HSTSMaxAge : Number
El máximo de tiempo (en segundos) que HSTS está activo para cada nueva conexión cliente. Esta información se almacena del lado del cliente durante el tiempo especificado.
Valor por defecto: 63072000 (2 años).
.HTTPCompressionLevel
.HTTPCompressionLevel : Number
El nivel de compresión para todos los intercambios HTTP comprimidos para el servidor HTTP 4D (peticiones del cliente o respuestas del servidor). Este selector permite optimizar los intercambios priorizando la velocidad de ejecución (menos compresión) o la cantidad de compresión (menos velocidad).
Valores posibles:
- 1 a 9 (donde 1 es la compresión más rápida y 9 la más alta).
- -1 = definir un compromiso entre la velocidad y la tasa de compresión.
Valores posibles:
.HTTPCompressionThreshold
.HTTPCompressionThreshold : Number
El umbral de tamaño (bytes) para las solicitudes por debajo del cual los intercambios no deben ser comprimidos. Este parámetro es útil para evitar la pérdida de tiempo de la máquina al comprimir los intercambios pequeños.
Umbral de compresión por defecto = 1024 bytes
.HTTPEnabled
.HTTPEnabled : Boolean
El estado del protocolo HTTP.
.HTTPPort
.HTTPPort : Number
El estado del protocoloHTTPS.
El número de puerto IP de escucha para HTTP.
.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
El estado de ejecución del servidor web.
.HTTPSPort
.HTTPSPort : Number
La disponibilidad de PFS en el servidor.
El número de puerto IP de escucha para HTTPS.
.inactiveProcessTimeout
.inactiveProcessTimeout : Number
This property is not returned in scalable sessions mode.
La duración (en minutos) de los procesos de sesión heredados inactivos. 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.
Por defecto = 480 minutos
.inactiveSessionTimeout
.inactiveSessionTimeout : Number
This property is not returned in scalable sessions mode.
La duración (en minutos) de las sesiones heredadas inactivas (duración establecida en la cookie). Al final de este periodo, la cookie de sesión expira y deja de ser enviada por el cliente HTTP.
Por defecto = 480 minutos
.IPAddressToListen
.IPAddressToListen : Text
La dirección IP en la que el servidor web 4D recibirá las peticiones HTTP. Por defecto, no se define ninguna dirección específica. Se soportan tanto los formatos de cadena IPv6 como los IPv4.
.isRunning
.isRunning : Boolean
Propiedad de sólo lectura
La función .stop()
detiene el servidor web sobre el que se aplica.
.keepSession
.keepSession : Boolean
Contains True
if legacy sessions are enabled in the web server, False
otherwise.
Ver también
.logRecording
.logRecording : Number
El valor de registro log (logweb.txt).
- 0 = No registrar (por defecto)
- 1 = Registro en formato CLF
- 2 = Registro en formato DLF
- 3 = Registro en formato ELF
- 4 = Registro en formato WLF
.maxConcurrentProcesses
.maxConcurrentProcesses : Number
El número máximo de procesos web concurrentes que soporta el servidor web. Cuando se alcance este número (menos uno), 4D no creará ningún otro proceso y devolverá el estado HTTP 503 - Servicio no disponible a todas las nuevas peticiones.
Valores posibles: 500000 - 2147483647
Valores posibles: 500000 - 2147483648
.maxRequestSize
.maxRequestSize : Number
Contains the maximum size (in bytes) of incoming HTTP requests (POST) that the web server is allowed to process. Pasar el valor máximo (2147483647) significa que, en la práctica, no se define ningún límite. Este límite se utiliza para evitar la saturación del servidor web debido a peticiones entrantes demasiado grandes. Si una petición alcanza este límite, el servidor web la rechaza.
Valores posibles: 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
La versión TLS mínima aceptada para las conexiones. Se rechazarán los intentos de conexión de clientes que sólo soporten versiones inferiores a la mínima.
Valores posibles:
- 1 = TLSv1_0
- 2 = TLSv1_1
- 3 = TLSv1_2 (por defecto)
- 4 = TLSv1_3
Valores posibles:
.name
.name : Text
Propiedad de sólo lectura
El nombre de la cookie utilizada para almacenar el ID de sesión.
.openSSLVersion
.openSSLVersion : Text
Propiedad de sólo lectura
La versión de la librería OpenSSL utilizada.
.perfectForwardSecrecy
.perfectForwardSecrecy : Boolean
Propiedad de sólo lectura
La disponibilidad de PFS en el servidor.
.rootFolder
.rootFolder : Text
La ruta de la carpeta raíz del servidor web. La ruta se formatea en la ruta completa POSIX utilizando 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.
Ver también
.sessionCookieDomain
.sessionCookieDomain : Text
El campo "domain" de la cookie de sesión. Se utiliza para controlar el alcance de las cookies de sesión. Si define, por ejemplo, el valor "/*.4d.fr" para este selector, el cliente sólo enviará una cookie cuando la solicitud se dirija al dominio ".4d.fr", lo que excluye a los servidores que alojan datos estáticos externos.
.sessionCookieName
.sessionCookieName : Text
Ver la descripción de Session Cookie SameSite para obtener información detallada.
Propiedad de sólo lectura
.sessionCookiePath
.sessionCookiePath : Text
El campo "path" de la cookie de sesión. Se utiliza para controlar el alcance de las cookies de sesión. Si define, por ejemplo, el valor "/4DACTION" para este selector, el cliente sólo enviará una cookie para las peticiones dinámicas que empiecen por 4DACTION, y no para las imágenes, páginas estáticas, etc.
.sessionCookieSameSite
Historia
Lanzamiento | Modificaciones |
---|---|
19 | Añadidos |
.sessionCookieSameSite : Text
El valor de la cookie de sesión "SameSite". Valores posibles (utilizando constantes):
Constante | Valor | Descripción |
---|---|---|
Web SameSite Strict | "Strict" | Default value - Cookies are only sent in a first-party context |
Web SameSite Lax | "Lax" | Las cookies también se envían en las sub-solicitudes entre sitios, pero sólo cuando un usuario está navegando hacia el sitio de origen (es decir, cuando sigue un enlace). |
Web SameSite None | "None" | Las cookies se envían en todos los contextos, es decir, en las respuestas a las solicitudes de primera parte y de origen cruzado. |
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).
La validación de la dirección IP para las cookies de sesión. Por razones de seguridad, por defecto el servidor web comprueba la dirección IP de cada solicitud que contiene una cookie de sesión y la rechaza si esta dirección no coincide con la dirección IP utilizada para crear la cookie. En algunas aplicaciones específicas, es posible que desee desactivar esta validación y aceptar las cookies de sesión, incluso cuando sus direcciones IP no coinciden. Por ejemplo, cuando los dispositivos móviles cambian entre las redes WiFi y 3G/4G, su dirección IP cambiará. En este caso, puede permitir que los clientes puedan seguir utilizando sus sesiones web incluso cuando las direcciones IP cambien (esta configuración reduce el nivel de seguridad de su aplicación).
.start()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R3 | Añadidos |
.start() : Object
.start( settings : Object ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
settings | Object | -> | Parámetros del servidor web a definir al inicio |
Result | Object | <- | Estado del inicio del servidor 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.
Objeto devuelto
La función devuelve un objeto que describe el estado de lanzamiento del servidor web. Este objeto puede contener las siguientes propiedades:
Propiedad | Tipo | Descripción | |
---|---|---|---|
success | Boolean | True si el servidor web se ha iniciado correctamente, False en caso contrario | |
errors | Collection | Pila de errores 4D (no se devuelve si el servidor web se inició con éxito) | |
[].errCode | Number | Código de error 4D | |
[].message | Text | Descripción del error 4D | |
[].componentSignature | Text | Firma del componente interno que ha devuelto el error |
Si el servidor web ya fue lanzado, se devuelve un error.
Ejemplo
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()
Historia
Lanzamiento | Modificaciones |
---|---|
18 R3 | Añadidos |
.stop()
Parámetros | Tipo | Descripción | |
---|---|---|---|
No requiere ningún parámetro |
The .stop()
function stops the web server on which it is applied.
Si el servidor web se ha iniciado, todas las conexiones y procesos web se cierran, una vez que las peticiones actualmente gestionadas han finalizado. Si el servidor web no se ha iniciado, el método no hace nada.
This function resets the customized web settings defined for the session using the settings parameter of the
.start()
function, if any.
Ejemplo
Para detener el servidor web de la base:
var $webServer : 4D.WebServer
$webServer:=WEB Server(Web server database)
$webServer.stop()