Saltar para o conteúdo principal
Versão: v20 R4 BETA

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
VersãoMudanças
v18 R3Adicionado
v19suporte para .sessionCookieSameSite

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

ParâmetroTipoDescrição
optionInteger->Servidor Web a ser obtido (padrão se omitido = Banco de dados de servidores Web)
Resultados4D. 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âmetrosValorComentário
Web server database1Servidor Web de banco de dados atual (padrão caso omitido)
<a href="#keepsession">.keepSession</a>2Servidor Web do banco de dados de host de um componente
Solicitação de recebimento do servidor web3Servidor 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
VersãoMudanças
v18 R3Adicionado

WEB Server list : Collection

ParâmetroTipoDescrição
ResultadosCollection<-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:

  • 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

.scalableSession

.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

.keepSession

.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
VersãoMudanças
v19Adicionado

.sessionCookieSameSite : Text

O "Valor do cookie da sessão "SameSite. Possíveis valores (usando constantes):

ParâmetrosValorDescriçã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
VersãoMudanças
v18 R3Adicionado

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

ParâmetroTipoDescrição
settingsObject->Configurações do servidor Web a definir no arranque
ResultadosObject<-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:

PropriedadeTipoDescrição
successParâmetrosVerdadeiro se o servidor web foi correctamente iniciado, Falso caso contrário
errorsCollectionpilha de erros 4D (não devolvidos se o servidor web começou com sucesso)
[].errCodeNumberCódigo de erro 4D
[].messageTextDescrição do erro 4D
[].componentSignatureTextAssinatura 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
VersãoMudanças
v18 R3Adicionado

.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()