new Request()
Classe utilizada para acessar as informações contidas em uma requisição HTTP.
Esta classe é criada automaticamente pelo sistema quando um ambiente JavaScript está atendendo uma requisição HTTP. Neste caso, é criada a variável global request. Sessões que não tem relação com um atendimento HTTP, como ambientes do Scheduler, não possuem esta variável global.
Classe também publicada por meio da variável global Request.
Members
-
acceptLanguage :string
-
Cabeçalho HTTP que indica as línguas desejadas pelo requisitante.
Type:
- string
-
body :module:@nginstack/engine/lib/http/RequestBody~RequestBody
-
Corpo da requisição.
Type:
-
clientAddress :string
-
Endereço IP do computador do cliente final da requisição, normalmente o navegador do usuário.
Quando a requisição passa por proxies ou balanceadores de carga, o endereço é obtido dos cabeçalhos "X-Forwarded-For" ou "Forwarded" informados por eles. Caso os dois sejam informados, prevalece o "X-Forwarded-For". Esses cabeçalhos somente são confiáveis quando enviados por um proxy registrado no cadastro "Administração do sistema > Servidores > Proxies confiáveis", o que é indicado pela propriedade
clientAddressVerified. Sem cabeçalhos de encaminhamento, é igual aremoteAddress.Type:
- string
Example
// Requisição com "X-Forwarded-For: 203.0.113.5" enviada por um proxy confiável request.clientAddress; // => '203.0.113.5' request.clientAddressVerified; // => true -
clientAddressVerified :boolean
-
Indica se o endereço do cliente, obtido pela propriedade
clientAddress, é confiável.É falso quando o endereço foi informado pelos cabeçalhos de encaminhamento e não pode ser verificado: quando eles foram enviados por um computador que não está registrado no cadastro de proxies confiáveis, quando o endereço antecede um elemento da cadeia sem endereço válido, como "unknown", ou quando os cabeçalhos "X-Forwarded-For" e "Forwarded" indicam clientes diferentes. Nesses casos, o endereço pode ter sido forjado pelo próprio cliente e não deve ser utilizado em validações de segurança.
Type:
- boolean
- See:
-
content :string
-
Conteúdo enviado pelo cliente no corpo da requisição.
Importante: essa propriedade aloca o corpo da requisição em memória e não deve ser utilizada em requisições de tamanho elevado. Tentar ler o corpo de uma requisição com mais de 20MB irá gerar um erro. Utilize o método #read para tratar requisições maiores.
Type:
- string
- See:
-
contentLength :number
-
Tamanho em bytes do conteúdo contido no corpo da requisição informado pelo cliente por meio do cabeçalho content-length.
O valor desta propriedade poderá ser diferente do tamanho de #content no caso de conteúdos textuais codificados em UTF-8. O Engine converterá automaticamente esses conteúdos para ISO-8859-1, o que poderá provocar uma redução do tamanho do conteúdo disponibilizado pela propriedade #content. Nesses casos, o método #read pode ser utilizado para ter acesso ao conteúdo original enviado pelo cliente.
Type:
- number
-
contentType :string
-
Tipo de mídia do conteúdo enviado pelo cliente.
Ver http://www.iana.org/assignments/media-types/media-types.xhtml para mais detalhes.
Type:
- string
-
cookieCount :number
-
Quantidade de cookies enviados na requisição.
Type:
- number
-
forwardedFor :string
-
Endereços da cadeia de encaminhamento da requisição, separados por vírgula, do cliente final ao último proxy, conforme informados pelos cabeçalhos "X-Forwarded-For" ou "Forwarded". Caso os dois sejam informados, prevalece o "X-Forwarded-For". Os endereços são normalizados: as portas e os colchetes dos endereços IPv6 são removidos. Os identificadores ofuscados ou "unknown" do cabeçalho "Forwarded" são mantidos como informados, e um elemento sem o parâmetro "for" é representado por "unknown". É vazio quando a requisição não informa esses cabeçalhos.
O endereço do computador que realizou a requisição, normalmente o último proxy, não faz parte da cadeia e é obtido pela propriedade
remoteAddress. Somente os endereços acrescentados por proxies confiáveis são garantidos. Os demais podem ter sido forjados pelo cliente. Para obter o endereço do cliente final, utilize a propriedadeclientAddresse verifique se ele é confiável pela propriedadeclientAddressVerified.Type:
- string
Example
// Requisição com "Forwarded: for=203.0.113.5;proto=https, for=\"[2001:db8::1]:4711\"" request.forwardedFor; // => '203.0.113.5, 2001:db8::1' -
forwardedHost :string
-
Host solicitado pelo cliente ao primeiro proxy da requisição, conforme informado pelos cabeçalhos "X-Forwarded-Host" ou "Forwarded". É vazio quando a requisição não passou por um proxy que informe o host.
O valor é apenas informativo, pois esses cabeçalhos podem ter sido forjados pelo cliente.
Type:
- string
-
forwardedProto :string
-
Protocolo utilizado pelo cliente para acessar o primeiro proxy da requisição, como "https", conforme informado pelos cabeçalhos "X-Forwarded-Proto" ou "Forwarded". É vazio quando a requisição não passou por um proxy que informe o protocolo.
O valor é apenas informativo, pois esses cabeçalhos podem ter sido forjados pelo cliente.
Type:
- string
- See:
-
headers :Record.<string, string>
-
Cabeçalhos informados na requisição HTTP representados por um objeto cujos nomes de propriedades são os nomes dos campos de cabeçalho, normalizados em caixa baixa, e os valores das propriedades são os valores dos campos de cabeçalho.
Type:
- Record.<string, string>
Example
// Script que exibe todos os cabeçalhos enviados pelo navegador const headers = request.headers; for (const name in headers){ response.write(name + ": " + headers[name] + "<br>"); } -
host :string
-
Nome do servidor solicitado pelo usuário. Caso a URL informada seja "www.company.com/index.htm", o host será "www.company.com".
Type:
- string
-
httpMessage :string
-
Mensagem HTTP completa.
Type:
- string
-
localAddress :string
-
Endereço IP da interface de rede que atendeu a requisição HTTP.
Type:
- string
-
localHost :string
-
Nome associado ao endereço IP da interface de rede que atendeu a requisição HTTP.
Type:
- string
-
localPort :number
-
Porta TCP que atendeu a requisição HTTP.
Type:
- number
-
method :string
-
Indica o método HTTP que será sendo invocado. Poderá ser: GET, POST, PUT, PATCH, DELETE, HEAD ou OPTIONS.
Type:
- string
-
methodType :string
-
Indica o método HTTP que será sendo invocado. Poderá ser: GET, POST, PUT, PATCH, DELETE, HEAD ou OPTIONS.
Type:
- string
- Deprecated:
-
- Utilize #method.
-
parameterCount :number
-
Quantidade de parâmetros enviados na requisição. Parâmetros podem ser enviados no corpo da requisição ou na query string da URL.
Type:
- number
-
params :Object.<string>
-
Retorna um objeto com todos os parâmetros informados na "query string" da URL da requisição. Para possibilitar a pesquisa, os nomes dos parâmetros serão em minúsculo no objeto retornado. Caso haja um parâmetro definido mais de uma vez, será considerado o último valor informado na URL. Mais detalhes em http://en.wikipedia.org/wiki/Query_string.
Type:
- Object.<string>
-
path :string
-
Arquivo requisitado. Caso a URL informada seja "www.company.com.br/index.htm", o path será "/index.htm".
Type:
- string
-
readTimeout :number
-
Tempo máximo de espera em milissegundos para a leitura do conteúdo. O timeout de leitura será empregado no método #read quando for solicitada uma quantidade de dados superior ao que já foi recebido do cliente.
Type:
- number
-
referer :string
-
Arquivo que originou a requisição. Exemplo: se o cliente abrir a página /index.htm e nesta for requisitado um segundo documento, o referer deste último será /index.htm.
Type:
- string
-
remoteAddress :string
-
Endereço IP do computador que realizou a requisição HTTP.
Quando a requisição passa por proxies ou balanceadores de carga, este é o endereço do último deles. Utilize a propriedade
clientAddresspara obter o endereço do cliente final.Type:
- string
-
remoteHost :string
-
Nome do computador que realizou a requisição HTTP.
Type:
- string
-
remotePort :number
-
Porta TCP utilizada pelo computador remoto para realizar a requisição HTTP.
Type:
- number
-
userAgent :string
-
Identificação do aplicativo cliente que fez a requisição HTTP.
Type:
- string
-
xml :string
-
Representação DOM dos dados enviados pelo browser para o servidor. Esta propriedade somente estará preenchida quando o tipo dos dados enviados for "text/xml". Para outros tipos, será null.
Type:
- string
- See:
Methods
-
getCookie(indexOrName)
-
Obtém o valor do cookie informado.
Parameters:
Name Type Description indexOrNamenumber| string Índice ou nome do cookie. O índice é um valor dentro da faixa de 0 a #cookieCount - 1.
- See:
-
getCookieName(index)
-
Obtém o nome do cookie na posição informada.
Parameters:
Name Type Description indexÍndice ou nome do cookie. O índice é um valor dentro da faixa de 0 a #cookieCount - 1.
- See:
-
getHeader()
-
Lê o conteúdo do cabeçalho informado da requisição HTTP. Retorna vazio, caso o cabeçalho não tenha sido preenchido pelo cliente.
Returns:
- Type
- string
Example
// Verifica se o navegador aceita a compressão da resposta utilizando o // algoritmo Gzip var encodings = request.getHeader("Accept-Encoding") encodings = encodings.toLowerCase().split(",") var useGzip = encodings.indexOf("gzip") >= 0 -
getParameter(indexOrName)
-
Obtém o valor do parâmetro informado.
Parameters:
Name Type Description indexOrNamenumber| string Índice ou nome do parâmetro. O índice é um valor dentro da faixa de 0 a #parameterCount - 1.
- Deprecated:
-
- Yes
- See:
Returns:
Valor do parâmetro.
- Type
- string
-
getParameterName(index)
-
Obtém o nome do parâmetro informado.
Parameters:
Name Type Description indexnumber| string Índice do parâmetro. O índice é um valor dentro da faixa de 0 a #parameterCount - 1.
- See:
-
isHttps( [trustProxy])
-
Avalia se a requisição foi estabelecida utilizando o protocolo HTTPS.
A conexão HTTPS pode ter sido estabelecida diretamente até o Engine ou indiretamente via um proxy reverso configurado com o certificado digital. Neste último caso, o tráfego entre o proxy reverso e o Engine pode ter sido estabelecido via HTTP.
Por padrão, o cabeçalho "x-forwarded-proto" é aceito de qualquer origem, sem depender do cadastro de proxies confiáveis, para que ambientes atrás de balanceadores de carga funcionem sem configuração adicional. Um cliente que forje esse cabeçalho altera apenas a resposta da sua própria requisição. Informe
falseemtrustProxyquando o resultado for utilizado em uma decisão de segurança que não possa depender de um valor informado pelo cliente.Parameters:
Name Type Argument Default Description trustProxyboolean <optional>
trueIndica se o cabeçalho "x-forwarded-proto" recebido deve ser considerado como confiável para avaliar se o protocolo utilizado foi o HTTPS.
Returns:
True se a conexão for HTTPS.
- Type
- boolean
-
param(name, opt_default)
-
Obtém um parâmetro informado na "query string" da URL da requisição. Mais detalhes do formato em http://en.wikipedia.org/wiki/Query_string.
Parameters:
Name Type Description namestring Nome do parâmetro.
opt_default* Valor padrão a ser utilizado caso o parâmetro não tenha sido informado na URL. Caso não seja informado, será considerado null.
Returns:
Valor do parâmetro informado ou "opt_default" caso não haja o parâmetro informado na "query string" da URL.
- Type
- string
-
read(size)
-
Lê os dados contidos no corpo da requisição.
O uso deste método é recomendado para requisições de tamanho elevado, como upload de arquivos, pois ele permite que o conteúdo seja lido parcialmente, sem que seja necessário alocar o conteúdo inteiro da requisição em memória.
Importante: ao utilizar este método para ler o corpo da requisição, nenhum tratamento automático de codificação de UTF-8 para ISO-8859-1 será realizado, nem poderão ser utilizadas outras propriedades ou métodos de acesso ao corpo da requisição, como #content. A propriedade #httpMessage não exibirá o conteúdo da requisição e #params não irá considerar os parâmetros informados no corpo da requisição, mesmo que o tipo do conteúdo seja application/x-www-form-urlencoded.
Parameters:
Name Type Description sizenumber Quantidade de dados a serem lidos. O método bloqueará até que a quantidade de dados solicitada esteja disponível ou irá gerar um erro caso o tempo limite #readTimeout seja atingido. No máximo poderá ser solicitado 1 MB de dados a cada leitura, será lançada uma exceção caso seja solicitado um valor superior a esse.
- See:
Returns:
Dados lidos do corpo da requisição.
- Type
- string
Example
var timeout = 60000; var outFile = new File(File.getTempFileName()); var remain = request.contentLength; while (remain > 0 && Date.now() < timeout) { var buffer = request.read(Math.min(1024, remain)); remain -= buffer.length; outFile.write(buffer); } -
saveToStream(stream)
-
Grava o corpo da requisição no arquivo ou stream informado.
Parameters:
Name Type Description streammodule:@nginstack/engine/lib/io/File~File| module:@nginstack/engine/lib/io/MemoryStream~MemoryStream Objeto stream onde o corpo da requisição será gravado.
Example
const file = new File(path); try { request.saveToStream(file); } finally { file.close(); }