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 pasta onde os arquivos de certificados estão localizados |
.characterSet : Number .characterSet : Text conjunto de caracteres que o servidor Web 4D deve usar para se comunicar com navegadores conectados à aplicação |
.cipherSuite : Text lista de cifras usada para o protocolo seguro |
.CORSEnabled : Boolean estado do serviço CORS (Cross-origin resource sharing) para o servidor |
.CORSSettings : Collection lista dos hosts e métodos permitidos para o serviço CORS |
.debugLog : Integer status of the HTTP request log file |
.defaultHomepage : Text nome da página inicial padrão |
.HSTSEnabled : Boolean estado do HTTP Strict Transport Security (HSTS) |
.HSTSMaxAge : Integer tempo máximo (em segundos) que HSTS está ativo para cada nova conexão cliente |
.HTTPCompressionLevel : Integer nível de compressão para todas as trocas HTTP comprimidas para o servidor HTTP 4D (solicitações do cliente ou respostas do servidor) |
.HTTPCompressionThreshold : Integer limite de tamanho das solicitações (bytes) para abaixo do qual as trocas não devem ser compactadas |
.HTTPEnabled : Boolean HTTP |
.HTTPPort : Integer número da porta IP de escuta para HTTP |
.HTTPTrace : Boolean ativação de HTTP TRACE |
.HTTPSEnabled : Boolean estado do protocolo HTTPS |
.HTTPSPort : Integer número da porta IP de escuta para HTTPS |
.inactiveProcessTimeout : Integer duração da vida (em minutos) dos processos de sessão legados inativos |
.inactiveSessionTimeout : Integer duração (em minutos) das sessões legadas inativas (duração definida no cookie) |
.IPAddressToListen : Text Endereço IP no qual o Servidor Web 4D receberá solicitações HTTP |
.isRunning : Boolean estado de execução do servidor web |
.keepSession : BooleanTrue se as sessões legadas estiverem ativadas no servidor da Web; caso contrário, False |
.logRecording : Integer modo de registro do log das solicitações (logweb.txt) |
.maxConcurrentProcesses : Integer número máximo de processos web simultâneos suportados pelo servidor |
.maxRequestSize : Integer maximum size (in bytes) of incoming HTTP requests (POST) that the web server is allowed to process |
.maxSessions : Integer número máximo de sessões legacy simultâneas |
.minTLSVersion : Integer versão mínima de TLS aceita para as conexões |
.name : Text nome da aplicação web server |
.openSSLVersion : Text versão da biblioteca OpenSSL usada |
.perfectForwardSecrecy : Boolean disponibilidade de PFS no servidor |
.rootFolder : Text caminho da pasta raiz do servidor web |
.scalableSession : BooleanTrue se sessões escalonáveis forem usadas no servidor da Web e False caso contrário |
.sessionCookieDomain : Text "domain" do cookie de sessão |
.IPAddressToListen : Text Endereço IP no qual o Servidor Web 4D receberá solicitações HTTP |
.sessionCookiePath : Text campo "path" do cookie de sessão |
.sessionCookieSameSite : Text valor "SameSite" do cookie de sessão |
.sessionIPAddressValidation : Boolean validação de endereço IP para cookies de sessão |
.start() : Object .start( settings : Object ) : Object starts the web server on which it is applied |
.stop() interrompe o servidor web no qual ele é aplicado |
.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
Caminho do pasta onde os arquivos de certificados estão localizados. 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
O conjunto de caracteres que o servidor Web 4D deve usar para se comunicar com navegadores conectados à aplicação. 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
A lista de cifras usada para o protocolo seguro. 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
O estado do serviço CORS (Cross-origin resource sharing) para o servidor. 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
Contém a lista dos hosts e métodos permitidos para o serviço CORS (veja a propriedade CORSEnabled
). 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://\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*.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
O nome da página inicial padrão ou "" para não enviar a página inicial personalizada.
.HSTSEnabled
.HSTSEnabled : Boolean
O estado do HTTP Strict Transport Security (HSTS). 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
O tempo máximo (em segundos) que HSTS está ativo para cada nova conexão cliente. Esta informação é armazenada no lado do Cliente durante a duração especificada.
Valor padrão: 63072000 (2 anos).
.HTTPCompressionLevel
.HTTPCompressionLevel : Integer
O nível de compressão para todas as trocas HTTP comprimidas para o servidor HTTP 4D (solicitações do cliente ou respostas do servidor). 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
O limite de tamanho das solicitações (bytes) para abaixo do qual as trocas não devem ser compactadas. 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
O número da porta IP de escuta para HTTP.
O padrão = 80
.HTTPTrace
.HTTPTrace : Boolean
A ativação de 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
O estado do protocolo HTTPS.
.HTTPSPort
.HTTPSPort : Integer
O número da porta IP de escuta para HTTPS.
O padrão = 443
.inactiveProcessTimeout
.inactiveProcessTimeout : Integer
Essa propriedade não é retornada no modo de sessões dimensionáveis.
A duração da vida (em minutos) dos processos de sessão legados inativos. 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
Essa propriedade não é retornada no modo de sessões dimensionáveis.
A duração (em minutos) das sessões legadas inativas (duração definida no 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
O Endereço IP no qual o Servidor Web 4D receberá solicitações HTTP. Normalmente, nenhum endereço específico é definido. Os formatos string IPv6 e IPv4 são compatíveis
.isRunning
.isRunning : Boolean
Propriedade apenas leitura
O estado de execução do servidor web.
.keepSession
.keepSession : Boolean
Contém True
se as sessões legadas estiverem ativadas no servidor da Web; caso contrário, False
.
Veja também
.logRecording
.logRecording : Integer
O modo de registro do log das solicitações (logweb.txt).
- 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
O número máximo de processos web simultâneos suportados pelo servidor. 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
Essa propriedade não é retornada no modo de sessões dimensionáveis.
Contém o número máximo de sessões legacy simultâneas. 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
A versão mínima de TLS aceita para as conexões. 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
O nome da aplicação web server.
.openSSLVersion
.openSSLVersion : Text
Propriedade apenas leitura
A versão da biblioteca OpenSSL usada.
.perfectForwardSecrecy
.perfectForwardSecrecy : Boolean
Propriedade apenas leitura
A disponibilidade de PFS no servidor.
.rootFolder
.rootFolder : Text
O caminho da pasta raiz do servidor web . 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
Contém True
se sessões escalonáveis forem usadas no servidor da Web e False
caso contrário.
Veja também
.sessionCookieDomain
.sessionCookieDomain : Text
O "domain" do cookie de sessão. 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
O nome do cookie usado para armazenar o ID da sessão.
Propriedade apenas leitura
.sessionCookiePath
.sessionCookiePath : Text
O campo "path" do cookie de sessão. 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
O valor "SameSite" do cookie de sessão. 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. |
Veja a descrição do cookie da sessão SameSite para informações detalhadas.
.sessionIPAddressValidation
.sessionIPAddressValidation : Boolean
Esta propriedade não é usada no modo sessões escaláveis (não há validação de endereço IP).
O validação de endereço IP para cookies de sessão. 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 |
A função .stop()
interrompe o servidor web no qual ele é aplicado.
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()