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). Essa classe está disponível no "class store" de 4D
.
Objeto Web Server
Os objetos servidor Web são instanciados com o comando WEB Server
.
Eles oferecem as propriedades abaixo e funções:
Resumo
.accessKeyDefined : Boolean true se uma chave de acesso estiver definida nas configurações do servidor Web |
.certificateFolder : Text folder where the certificate files are located |
.characterSet : Number .characterSet : Text character set that the 4D Web Server should use to communicate with browsers connecting to the application |
.cipherSuite : Text cipher list used for the secure protocol |
.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 : Integer status of the HTTP request log file |
.defaultHomepage : Text name of the default home page |
.HSTSEnabled : Boolean HTTP Strict Transport Security (HSTS) status |
.HSTSMaxAge : Integer maximum length of time (in seconds) that HSTS is active for each new client connection |
.HTTPCompressionLevel : Integer compression level for all compressed HTTP exchanges for the 4D HTTP server (client requests or server replies) |
.HTTPCompressionThreshold : Integer size threshold (bytes) for requests below which exchanges should not be compressed |
.HTTPEnabled : Boolean HTTP |
.HTTPPort : Integer listening IP port number for HTTP |
.HTTPTrace : Boolean activation of HTTP TRACE |
.HTTPSEnabled : Boolean HTTPS protocol state |
.HTTPSPort : Integer listening IP port number for HTTPS |
.inactiveProcessTimeout : Integer life duration (in minutes) of the inactive legacy session processes |
.inactiveSessionTimeout : Integer life duration (in minutes) of inactive legacy sessions (duration set in cookie) |
.IPAddressToListen : Text IP address on which the 4D Web Server will receive HTTP requests |
.isRunning : Boolean web server running state |
.keepSession : BooleanTrue if legacy sessions are enabled in the web server, False otherwise |
.logRecording : Integer log requests (logweb.txt) recording value |
.maxConcurrentProcesses : Integer maximum number of concurrent web processes supported by the web server |
.maxRequestSize : Integer maximum size (in bytes) of incoming HTTP requests (POST) that the web server is allowed to process |
.maxSessions : Integer maximum number of simultaneous legacy sessions |
.minTLSVersion : Integer minimum TLS version accepted for connections |
.name : Text name of the web server application |
.openSSLVersion : Text version of the OpenSSL library used |
.perfectForwardSecrecy : Boolean PFS availability on the server |
.rootFolder : Text path of web server root folder |
.scalableSession : BooleanTrue if scalable sessions are used in the web server, and False otherwise |
.sessionCookieDomain : Text "domain" field of the session cookie |
.IPAddressToListen : Text IP address on which the 4D Web Server will receive HTTP requests |
.sessionCookiePath : Text "path" field of the session cookie |
.sessionCookieSameSite : Text "SameSite" session cookie value |
.sessionIPAddressValidation : Boolean IP address validation for session cookies |
.start() : Object .start( settings : Object ) : Object starts the web server on which it is applied |
.stop() stops the web server on which it is applied |
.accessKeyDefined
.accessKeyDefined : Boolean
A propriedade .accessKeyDefined contém true se uma chave de acesso estiver definida nas configurações do servidor Web. Esta propriedade é usada pelo servidor web WebAdmin para validar a configuração de segurança da interface de administração.
.certificateFolder
.certificateFolder : Text
Path of the folder where the certificate files are located. O caminho está formatado no caminho completo POSIX usando sistemas de arquivos. Ao usar essa propriedade no parâmetro settings
da função .start()
, ela pode ser um objeto Folder
.
.characterSet
.characterSet : Number
.characterSet : Text
The character set that the 4D Web Server should use to communicate with browsers connecting to the application. O valor padrão realmente depende da linguagem do SO. O valor padrão realmente depende da linguagem do SO. Aqui está a lista de identificadores correspondentes aos conjuntos de caracteres suportados pelo 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
The cipher list used for the secure protocol. Define a prioridade dos algoritmos de criptografia implementados pelo servidor web 4D. Pode ser uma sequência de frases separadas por dois pontos (por exemplo, "ECDHE-RSA-AES128-..."). Veja a página ciphers no site OpenSSL.
.CORSEnabled
.CORSEnabled : Boolean
The CORS (Cross-origin resource sharing) service status for the web server. Por razões de segurança, solicitações de "cross-domain" são proibidas no nível do navegador por padrão. Por razões de segurança, solicitações de "cross-domain" são proibidas no nível do navegador por padrão. Quando desativado (False, padrão), todas as solicitações de cruzamento de sites enviadas com CORS são ignoradas. Quando habilitado (verdadeiro) e um domínio ou método não permitido envia uma solicitação de site cruzado, ele é rejeitado com uma resposta de erro "403 - proibido".
Padrão: Falso (desabilitado)
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). Cada objeto deve conter uma propriedade host e, opcionalmente, uma propriedade methods:
-
host (text, mandatory): Domain name or IP address from where external pages are allowed to send data requests to the Server via CORS. Vários atributos de domínio podem ser adicionados para criar uma lista branca. Vários atributos de domínio podem ser adicionados para criar uma lista branca. Várias sintaxes são suportadas:
- 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 (texto, opcional): métodos HTTP aceito(s) para o host CORS correspondente. Separar cada método com um ";" (por exemplo: "post;get"). Separar cada método com um ";" (por exemplo: "post;get").
.debugLog
.debugLog : Integer
The status of the HTTP request log file (HTTPDebugLog_nn.txt, stored in the "Logs" folder of the application -- nn is the file number).
- 0 = desactivado
- 1 = habilitado sem partes do corpo (o tamanho do corpo é fornecido neste caso)
- 3 = ativado com partes do corpo apenas em resposta
- 5 = ativado com partes do corpo apenas em resposta
- 7 = ativado com partes do corpo apenas em resposta
.defaultHomepage
.defaultHomepage : Text
The name of the default home page or "" to not send the custom home page.
.HSTSEnabled
.HSTSEnabled : Boolean
The HTTP Strict Transport Security (HSTS) status. O HSTS permite que o servidor declare que os navegadores só devem interagir com ele através de conexões HTTPS seguras. Navegadores gravarão as informações de HSTS na primeira vez que receberem uma resposta do servidor web, então quaisquer futuras solicitações HTTP serão automaticamente transformadas em solicitações HTTPS. O HSTS permite que o servidor declare que os navegadores só devem interagir com ele através de conexões HTTPS seguras. A HSTS requer que HTTPS esteja ativado no servidor. HTTP deve também ser habilitado para permitir conexões iniciais de clientes.
.HSTSMaxAge
.HSTSMaxAge : Integer
The maximum length of time (in seconds) that HSTS is active for each new client connection. Esta informação é armazenada no lado do Cliente durante a duração especificada.
Valor padrão: 63072000 (2 anos).
.HTTPCompressionLevel
.HTTPCompressionLevel : Integer
The compression level for all compressed HTTP exchanges for the 4D HTTP server (client requests or server replies). Este seletor permite otimizar trocas priorizando a velocidade de execução (menos compactação) ou a quantidade de compressão (menos velocidade)
Valores possíveis:
- 1 a 9 (onde 1 é a compressão mais rápida e 9 a mais alta).
- -1 = define um compromisso entre a velocidade e a taxa de compressão.
Padrão = 1 (compressão mais rápida).
.HTTPCompressionThreshold
.HTTPCompressionThreshold : Integer
The size threshold (bytes) for requests below which exchanges should not be compressed. Essa configuração é útil para evitar perder o tempo da máquina ao comprimir pequenas trocas.
Limite de compressão padrão = 1024 bytes
.HTTPEnabled
.HTTPEnabled : Boolean
Estado do protocolo HTTP.
.HTTPPort
.HTTPPort : Integer
The listening IP port number for HTTP.
O padrão = 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
The HTTPS protocol state.
.HTTPSPort
.HTTPSPort : Integer
The listening IP port number for HTTPS.
O padrão = 443
.inactiveProcessTimeout
.inactiveProcessTimeout : Integer
This property is not returned in scalable sessions mode.
The life duration (in minutes) of the inactive legacy session processes. 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.
Default = 480 minutos
.inactiveSessionTimeout
.inactiveSessionTimeout : Integer
This property is not returned in scalable sessions mode.
The life duration (in minutes) of inactive legacy sessions (duration set in cookie). No final do período, o cookie da sessão expira e não é mais enviada pelo cliente HTTP.
Default = 480 minutos
.IPAddressToListen
.IPAddressToListen : Text
The IP address on which the 4D Web Server will receive HTTP requests. Normalmente, nenhum endereço específico é definido. Os formatos string IPv6 e IPv4 são compatíveis
.isRunning
.isRunning : Boolean
Propriedade apenas leitura
The web server running state.
.keepSession
.keepSession : Boolean
Contains True
if legacy sessions are enabled in the web server, False
otherwise.
Veja também
.logRecording
.logRecording : Integer
The log requests (logweb.txt) recording value.
- 0 = Não registrar (padrão)
- 1 = Guardar no formato CLF
- 2 = Guardar no formato DLF
- 3 = Guardar no formato ELF
- 4 = Guardar no formato WLF
.maxConcurrentProcesses
.maxConcurrentProcesses : Integer
The maximum number of concurrent web processes supported by the web server. Quando este número (menos um) é alcançado, 4D não cria outro processos e retorna o status HTTP 503 - Serviço indisponível para novas petições.
Valores possíveis: 10 - 32000
Normal = 100
.maxRequestSize
.maxRequestSize : Integer
Contains the maximum size (in bytes) of incoming HTTP requests (POST) that the web server is allowed to process. Passar o valor máximo (2147483647) significa na prática que não é estabelecido um limite. Este limite é utilizado para evitar a saturação do servidor web devido a pedidos recebidos demasiado grandes. Se um pedido atingir este limite, o servidor web rejeita-o.
Valores possíveis: 500000 - 2147483647
.maxSessions
.maxSessions : Integer
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 : Integer
The minimum TLS version accepted for connections. As tentativas de ligação de clientes que suportam apenas versões abaixo do mínimo serão rejeitadas.
Valores possíveis:
- 1 = TLSv1_0
- 2 = TLSv1_1
- 3 = TLSv1_2 (padrão)
- 4 = TLSv1_3
Se modificado, o servidor deve ser reiniciado para utilizar o novo valor.
.name
.name : Text
Propriedade apenas leitura
The name of the web server application.
.openSSLVersion
.openSSLVersion : Text
Propriedade apenas leitura
The version of the OpenSSL library used.
.perfectForwardSecrecy
.perfectForwardSecrecy : Boolean
Propriedade apenas leitura
The PFS availability on the server.
.rootFolder
.rootFolder : Text
The path of web server root folder. O caminho está formatado no caminho completo POSIX usando sistemas de arquivos. 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.
Veja também
.sessionCookieDomain
.sessionCookieDomain : Text
The "domain" field of the session cookie. Utilizado para controlar o alcance dos cookies da sessão. Se definir, por exemplo, o valor "/*.4d.fr" para este selector, o cliente só enviará um cookie quando o pedido for dirigido ao domínio ".4d.fr", o que exclui os servidores que hospedam dados estáticos externos.
.sessionCookieName
.sessionCookieName : Text
The name of the cookie used for storing the session ID.
Propriedade apenas leitura
.sessionCookiePath
.sessionCookiePath : Text
The "path" field of the session cookie. Utilizado para controlar o alcance dos cookies da sessão. Se definir, por exemplo, o valor "/4DACTION" para este selector, o cliente só enviará um cookie para pedidos dinâmicos que comecem por 4DACTION, e não para imagens, páginas estáticas, etc.
.sessionCookieSameSite
História
Release | Mudanças |
---|---|
19 | Adicionado |
.sessionCookieSameSite : Text
The "SameSite" session cookie value. Possíveis valores (usando constantes):
Parâmetros | Valor | Descrição |
---|---|---|
Web SameSite Strict | "Strict" | Valor por defeito - Os cookies só são enviados num contexto de primeira parte |
Web SameSite Lax | "Lax" | Os cookies também são enviados em pedidos cruzados mas apenas quando um utilizador está a navegar para o sítio de origem (isto é, quando segue um link). |
Web SameSite None | "None" | Os cookies são enviados em todos os contextos, ou seja, em resposta a pedidos tanto de primeira parte como de origem cruzada. |
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).
The IP address validation for session cookies. Por razões de segurança, por defeito o servidor web verifica o endereço IP de cada pedido contendo um cookie de sessão e rejeita-o se este endereço não corresponder ao endereço IP utilizado para criar o cookie. Em algumas aplicações específicas, poderá querer desactivar esta validação e aceitar cookies de sessão, mesmo quando os seus endereços IP não correspondem. Por exemplo, quando os dispositivos móveis mudam entre redes WiFi e 3G/4G, o seu endereço IP muda. Neste caso, pode permitir que os clientes possam continuar a utilizar as suas sessões web mesmo quando os endereços IP mudam (esta configuração reduz o nível de segurança da sua aplicação).
.start()
História
Release | Mudanças |
---|---|
18 R3 | Adicionado |
.start() : Object
.start( settings : Object ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
settings | Object | -> | Configurações do servidor Web a definir no arranque |
Resultados | Object | <- | Estado de arranque do 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)]).
As configurações de sessão personalizadas serão redefinidas quando a função .stop()
for chamada.
Objeto devolvido
A função devolve um objecto que descreve o estado de lançamento do servidor Web. Este objeto pode conter as seguintes propriedades:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | Parâmetros | Verdadeiro se o servidor web foi correctamente iniciado, Falso caso contrário | |
errors | Collection | pilha de erros 4D (não devolvidos se o servidor web começou com sucesso) | |
[].errCode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura da componente interna que devolveu o erro |
Se o servidor Web já tiver sido lançado, é devolvido um erro.
Exemplo
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()
História
Release | Mudanças |
---|---|
18 R3 | Adicionado |
.stop()
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Não exige nenhum parâmetro |
The .stop()
function stops the web server on which it is applied.
Se o servidor web foi iniciado, todas as ligações e processos web são fechados, uma vez terminados os pedidos actualmente tratados. Se o servidor web não foi iniciado, o método não faz nada.
This function resets the customized web settings defined for the session using the settings parameter of the
.start()
function, if any.
Exemplo
Para parar o servidor Web da base de dados:
var $webServer : 4D.WebServer
$webServer:=WEB Server(Web server database)
$webServer.stop()