WebServer
A API da classe WebServer
permite que você inicie e monitore um servidor web para o aplicativo (host) principal, bem como cada componente hospedado (consulte a visão geral do objeto Web Server). Esta classe está disponível na loja de classes de 4D
.
Objeto Web Server
Objetos do 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 for definida na configuração do servidor de web |
.certificateFolder : Text pasta onde se encontram os ficheiros do certificado |
.characterSet : Number .characterSet : Text conjunto de caracteres que o Servidor 4D Web deve usar para comunicar com navegadores conectados à aplicação |
.cipherSuite : Text lista cipher usada para protocolo de segurança |
.CORSEnabled : Boolean CORS (Cross-origin resource sharing) estado de serviço para o servidor web |
.CORSSettings : Collection lista de hosts permitidos e métodos para o serviço CORS |
.debugLog : Number estado do arquivo de log da petição HTTP |
.defaultHomepage : Text nome da página home |
.HSTSEnabled : Boolean estado HTTP Strict Transport Security (HSTS) |
.HSTSMaxAge : Number tamanho máximo de tempo (em segundos) em que HSTS está ativo para cada nova conexão de cliente |
.HTTPCompressionLevel : Number nível de compressão para todas as trocas HTTP compactado para o servidor 4D HTTP (petições cliente ou respostas servidor) |
.HTTPCompressionThreshold : Number tamanho limite (bytes) para petições abaixo da qual as trocas não serão compactadas |
.HTTPEnabled : Boolean Estado do protocolo HTTP |
.HTTPPort : Number número da porta listening IP para HTTP |
.HTTPTrace : Boolean ativação de HTTP TRACE |
.HTTPSEnabled : Boolean Estado do protocolo HTTPS |
.HTTPSPort : Number número de porta listening IP para HTTPS |
.inactiveProcessTimeout : Number O Duração (em minutos) dos processos de sessão legado inativos |
.inactiveSessionTimeout : Number duração (em minutos) da sessão inativa legado (estabelecida no cookie) |
.IPAddressToListen : Text Endereço IP no qual o servidor 4D Web vai receber a petição HTTP |
.isRunning : Boolean estado execução do servidor web |
.keepSession : Boolean True se sessões legado são ativadas no servidor web, ou então False |
.logRecording : Number valor guardado no log de petições (logweb.txt) |
.maxConcurrentProcesses : Number número máximo de processos web simultâneos suportados pelo servidor web |
.maxRequestSize : Number tamanho máximo (em bytes) de petições HTTP entrando (POST) que o web server está autorizado a processar |
.maxSessions : Number número máximo de sessões de legado simultâneas |
.minTLSVersion : Number versão mínima de TLS aceita para ligações |
.name : Text nome da aplicação do servidor web |
.openSSLVersion : Text versão da biblioteca OpenSSL utilizada |
.perfectForwardSecrecy : Boolean disponibilidade do PFS no servidor |
.rootFolder : Text caminho da pasta raiz do servidor web |
.scalableSession : Boolean True se forem utilizadas sessões escaláveis no servidor web, e Falso caso contrário |
.sessionCookieDomain : Text campo "domínio" do cookie da sessão |
.sessionCookieName : Text nome do cookie utilizado para guardar o ID da sessão |
.sessionCookiePath : Text campo "caminho" do cookie da sessão |
.sessionCookieSameSite : Text "Valor do cookie da sessão "SameSite |
.sessionIPAddressValidation : Boolean Validação de endereço IP para cookies de sessão |
.start() : Object .start( settings : Object ) : Object inicia o servidor web em que é aplicado |
.stop() pára o servidor web em que é aplicado |
WEB Server
Histórico
Release | Mudanças |
---|---|
18 R3 | Adicionado |
19 | suporte para .sessionCookieSameSite |
WEB Server : 4D. WebServer
WEB Server( option : Integer ) : 4D. WebServer
Parâmetro | Tipo | Descrição | |
---|---|---|---|
option | Integer | -> | Servidor Web a ser obtido (padrão se omitido = Banco de dados de servidores Web ) |
Resultados | 4D. WebServer | <- | Objeto Web Server |
O comando WEB Server
retorna o objeto padrão web server ou o objeto web server definido através do parâmetro option.
O servidor web começa com as definições padrão definidas no ficheiro de definições do projecto ou (apenas base de dados anfitriã) usando o comando WEB SET OPTION
. No entanto, utilizando o parâmetro settings, pode definir propriedades personalizadas para a sessão do servidor web.
Parâmetros | Valor | Comentário |
---|---|---|
Web server database | 1 | Servidor Web de banco de dados atual (padrão caso omitido) |
<a href="#keepsession">.keepSession</a> | 2 | Servidor Web do banco de dados de host de um componente |
Solicitação de recebimento do servidor web | 3 | Servidor web que recebeu o pedido (servidor Web de destino) |
O objeto Servidor Web retornado contém os valores atuais das propriedades do Servidor Web.
Exemplo
Do seu componente, você quer saber se o servidor Web do banco de dados host está iniciado:
// Method of a component
var $hostWS : 4D. WebServer
$hostWS:=WEB Server(Web server host database)
If($hostWS.isRunning)
...
End if
WEB Server list
Histórico
Release | Mudanças |
---|---|
18 R3 | Adicionado |
WEB Server list : Collection
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Resultados | Collection | <- | Coleção de objetos do Servidor Web disponível |
O comando WEB Server list
retorna uma coleção de todos os objetos Web server disponíveis na aplicação 4D.
Uma aplicação 4D pode conter em qualquer lugar de um a vários servidores Web:
- um servidor Web para o banco de dados host (servidor Web padrão)
- um servidor web para cada componente.
Todos os servidores Web disponíveis são retornados pelo comando WEB Server list
, quer estejam realmente executando ou não.
O objeto do servidor Web padrão é carregado automaticamente pelo 4D na inicialização. Por outro lado, cada servidor de Web de componente que você deseja usar deve ser instanciado usando o comando
WEB Server
.
Você pode usar o . ame propriedade do objeto do servidor Web para identificar o projeto ou componente ao qual cada objeto do servidor Web está anexado na lista.
Exemplo
Queremos saber quantos servidores rodando estão disponíveis:
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
A propriedade .accessKeyDefined contém true se uma chave de acesso for definida na configuração do servidor de 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 se encontram os ficheiros do certificado. O caminho está formatado no caminho completo POSIX usando sistemas de arquivos. Ao usar essa propriedade no parâmetro configurações
do . tart()
função, pode ser um Pasta
objeto.
.characterSet
.characterSet : Number
.characterSet : Text
O conjunto de caracteres que o Servidor 4D Web deve usar para comunicar com navegadores conectados à aplicação. O valor padrão realmente depende da linguagem do SO. Pode ser um inteiro MIBEnum ou uma string de nome, identificadores definidos por IANA. 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
O lista cipher usada para protocolo de segurança. 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 cifras no site OpenSSL.
.CORSEnabled
.CORSEnabled : Boolean
O CORS (Cross-origin resource sharing) estado de serviço para o servidor web. Por razões de segurança, solicitações de "cross-domain" são proibidas no nível do navegador por padrão. Quando ativado (True), chamadas XHR (por exemplo, Solicitações REST) de páginas da Web fora do domínio podem ser permitidas na sua aplicação (você precisa definir a lista de endereços permitidos na lista de domínio CORS, veja CORSSettings
abaixo). 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)
Para obter mais informações sobre o CORS, consulte a página de compartilhamento de recursos entre origens na Wikipédia.
.CORSSettings
.CORSSettings : Collection
Contém lista de hosts permitidos e métodos para o serviço CORS (ver propriedade CORSEnabled
). Cada objeto deve conter uma propriedade host e, opcionalmente, uma propriedade métodos:
-
host (texto, obrigatório): Nome de domínio ou endereço IP onde as páginas externas são permitidas de enviar requisições de dados para o servidor através do CORS. Vários atributos de domínio podem ser adicionados para criar uma lista branca. Se host não estiver presente ou vazio, o objeto é ignorado. 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
- *
-
métodos (texto, opcional): Métodos HTTP aceito(s) para o host CORS correspondente. Separar cada método com um ";" (por exemplo: "post;get"). Se os métodos ** estiverem como vazio, nulo ou indefinido, todos os métodos estão habilitados.
.debugLog
.debugLog : Number
O estado do arquivo de log da petição HTTP (HTTPDebugLog_nn.txt, armazenado na pasta "Logs" da aplicação - nn é o número de arquivo).
- 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 home ou "" para não enviar a página home personalizada.
.HSTSEnabled
.HSTSEnabled : Boolean
O estado 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 tempo que essas informações são armazenadas pelo navegador é especificado na propriedade HSTSMaxAge
. A HSTS requer que HTTPS esteja ativado no servidor. HTTP deve também ser habilitado para permitir conexões iniciais de clientes.
.HSTSMaxAge
.HSTSMaxAge : Number
O tamanho máximo de tempo (em segundos) em que HSTS está ativo para cada nova conexão de cliente. Esta informação é armazenada no lado do Cliente durante a duração especificada.
Valor padrão: 63072000 (2 anos).
.HTTPCompressionLevel
.HTTPCompressionLevel : Number
O nível de compressão para todas as trocas HTTP compactado para o servidor 4D HTTP (petições cliente ou respostas 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 : Number
O tamanho limite (bytes) para petições abaixo da qual as trocas não serão 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
O Estado do protocolo HTTP.
.HTTPPort
.HTTPPort : Number
O número da porta listening IP para HTTP.
O padrão = 80
.HTTPTrace
.HTTPTrace : Boolean
O ativação de HTTP TRACE
. Por razões de segurança, o servidor web padrão rejeita petições HTTP TRACE
com um erro 405. Quando ativado, o servidor web responde a petições HTTP TRACE
com a linha, cabeçalho e corpo pedido.
.HTTPSEnabled
.HTTPSEnabled : Boolean
O Estado do protocolo HTTPS.
.HTTPSPort
.HTTPSPort : Number
O número de porta listening IP para HTTPS.
O padrão = 443
.inactiveProcessTimeout
.inactiveProcessTimeout : Number
Esta propriedade não é retornada em scalable sessions mode.
O O Duração (em minutos) dos processos de sessão legado inativos. No final do timeout, o processo é terminado no servidor, o método de database On Web Legacy Close Session
é chamado, e então o contexto sessão legado é destruído.
Default = 480 minutos
.inactiveSessionTimeout
.inactiveSessionTimeout : Number
Esta propriedade não é retornada em scalable sessions mode.
O duração (em minutos) da sessão inativa legado (estabelecida 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 4D Web vai receber a petição 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 execução do servidor web.
.keepSession
.keepSession : Boolean
Contém True
se sessões legado são ativadas no servidor web, ou então False
.
Veja também
.logRecording
.logRecording : Number
O valor guardado no log de petiçõ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 : Number
O número máximo de processos web simultâneos suportados pelo servidor web. 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 : Number
Contém tamanho máximo (em bytes) de petições HTTP entrando (POST) que o web server está autorizado a processar. 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 : Number
Esta propriedade não é retornada em scalable sessions mode.
Contém número máximo de sessões de legado simultâneas. Quando se atinge o limite, a sessão de legado mais antiga é encerrada (e On Web Legacy Close Session
método de base de dados é chamado) se o servidor web precisar de criar um novo. O número de sessões legadas em simultâneo não pode exceder o número total de processos web (maxConcurrentProcesses
propriedade, 100 por padrão)
.minTLSVersion
.minTLSVersion : Number
O versão mínima de TLS aceita para ligaçõ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 do servidor web.
.openSSLVersion
.openSSLVersion : Text
Propriedade apenas leitura
O versão da biblioteca OpenSSL utilizada.
.perfectForwardSecrecy
.perfectForwardSecrecy : Boolean
Propriedade apenas leitura
O disponibilidade do 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. Ao utilizar esta propriedade no parâmetro settings
, pode ser um objecto Folder
.
.scalableSession
.scalableSession : Boolean
Contém True
se forem utilizadas sessões escaláveis no servidor web, e Falso
caso contrário.
Veja também
.sessionCookieDomain
.sessionCookieDomain : Text
O campo "domínio" do cookie da 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 utilizado para guardar o ID da sessão.
Propriedade apenas leitura
.sessionCookiePath
.sessionCookiePath : Text
O campo "caminho" do cookie da 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órico
Release | Mudanças |
---|---|
19 | Adicionado |
.sessionCookieSameSite : Text
O "Valor do cookie da sessão "SameSite. 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. |
Ver o Session Cookie SameSite descrição para informações detalhadas.
.sessionIPAddressValidation
.sessionIPAddressValidation : Boolean
Esta propriedade não é utilizada em 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órico
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 |
A função .start()
inicia o servidor web em que é aplicado, utilizando propriedades definidas nas definições opcionais ** parâmetro do objecto.
O servidor web começa com as definições padrão definidas no ficheiro de definições do projecto ou (apenas base de dados anfitriã) usando o comando WEB SET OPTION
. No entanto, utilizando o parâmetro settings, pode definir propriedades personalizadas para a sessão do servidor web.
Todas as definições dos objectos do Web Server podem ser personalizadas, excepto propriedades só de leitura (.isRunning, .name, .openSSLVersion, .perfectForwardSecrecy, e [.sessionCookieName(#sessioncookiename)]).
As definições personalizadas da sessão serão reiniciadas 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órico
Release | Mudanças |
---|---|
18 R3 | Adicionado |
.stop()
| Parâmetro | Tipo | | Descrição | | --------- | ---- | | ----------------------------------------------------- | | | | | Não exige nenhum parâmetro|
|
A função .stop()
pára o servidor web em que é 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.
Esta função repõe as definições web personalizadas definidas para a sessão utilizando o parâmetro ** da função
.start()
, se existir.
Exemplo
Para parar o servidor Web da base de dados:
var $webServer : 4D. WebServer
$webServer:=WEB Server(Web server database)
$webServer.stop()