Nette Documentation Preview

syntax
Resposta HTTP
*************

.[perex]
Nette encapsula a resposta HTTP em objetos com uma API compreensível enquanto fornece um filtro de sanitização.

Uma resposta HTTP é um objeto [api:Nette\Http\Response], que você obtém passando-o usando a [injeção de dependência |dependency-injection:passing-dependencies]. Nos apresentadores, basta ligar para `$httpResponse = $this->getHttpResponse()`.

→ [Instalação e requisitos |@home#Installation]


Nette\Http\Resposta .[#toc-nette-http-response]
===============================================

Unlike [Nette\Http\Request |request], this object is mutable, so you can use setters to change the state, ie to send headers. Lembre-se que todos os setters **devem ser chamados antes que qualquer saída real seja enviada.** O método `isSent()` informa se a saída foi enviada. Se ele retornar `true`, cada tentativa de enviar um cabeçalho lançará uma exceção `Nette\InvalidStateException`.


setCode(int $code, ?string $reason=null) .[method]
--------------------------------------------------
Altera um [código de resposta de |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] status. Para melhor legibilidade do código fonte, é recomendado o uso de [constantes pré-definidas |api:Nette\Http\IResponse] em vez de números reais.

```php
$httpResponse->setCode(Nette\Http\Response::S404_NotFound);
```


getCode(): int .[method]
------------------------
Retorna o código de status da resposta.


isSent(): bool .[method]
------------------------
Retorna se os cabeçalhos já foram enviados do servidor para o navegador, portanto não é mais possível enviar cabeçalhos ou alterar o código de status.


setHeader(string $name, string $value) .[method]
------------------------------------------------
Envia um cabeçalho HTTP e **sobreescritas*** cabeçalho previamente enviado com o mesmo nome.

```php
$httpResponse->setHeader('Pragma', 'no-cache');
```


addHeader(string $name, string $value) .[method]
------------------------------------------------
Envia um cabeçalho HTTP e **não sobrescreve** cabeçalho previamente enviado com o mesmo nome.

```php
$httpResponse->addHeader('Accept', 'application/json');
$httpResponse->addHeader('Accept', 'application/xml');
```


deleteHeader(string $name) .[method]
------------------------------------
Elimina um cabeçalho HTTP previamente enviado.


getHeader(string $header): ?string .[method]
--------------------------------------------
Devolve o cabeçalho HTTP enviado, ou `null` se ele não existir. O parâmetro não diferencia maiúsculas e minúsculas de minúsculas.

```php
$pragma = $httpResponse->getHeader('Pragma');
```


getHeaders(): array .[method]
-----------------------------
Devolve todos os cabeçalhos HTTP enviados como matriz associativa.

```php
$headers = $httpResponse->getHeaders();
echo $headers['Pragma'];
```


setContentType(string $type, ?string $charset=null) .[method]
-------------------------------------------------------------
Envia o cabeçalho `Content-Type`.

```php
$httpResponse->setContentType('text/plain', 'UTF-8');
```


redirect(string $url, int $code=self::S302_Found): void .[method]
-----------------------------------------------------------------
Redireciona para outra URL. Não se esqueça de desistir do roteiro então.

```php
$httpResponse->redirect('http://example.com');
exit;
```


setExpiration(?string $time) .[method]
--------------------------------------
Define a expiração do documento HTTP usando os cabeçalhos `Cache-Control` e `Expires`. O parâmetro é um intervalo de tempo (como texto) ou `null`, o que desativa o cache.

```php
// o cache do navegador expira em uma hora
$httpResponse->setExpiration('1 hour');
```


sendAsFile(string $fileName) .[method]
--------------------------------------
A resposta deve ser baixada com *Salvar como* diálogo com nome especificado. Ele próprio não envia nenhum arquivo para a saída.

```php
$httpResponse->sendAsFile('invoice.pdf');
```


setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method]
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Envia um cookie. Valores de parâmetros padrão:

| `$path` | `'/'` | com escopo para todos os caminhos no (sub)domínio *(configurável)*
| `$domain` | `null` | com escopo do (sub)domínio atual, mas não de seus subdomínios *(configurável)*
| `$secure` | `true` | se o site estiver rodando em HTTPS, caso contrário `false` *(configurável)*
| `$httpOnly` | `true` | cookie é inacessível ao JavaScript
| `$sameSite` | `'Lax'` | cookie não tem que ser enviado quando [acessado de outra origem |nette:glossary#SameSite cookie]

Você pode alterar os valores padrão dos parâmetros `$path`, `$domain` e `$secure` na [configuração#HTTP cookie |configuration#HTTP cookie].

O tempo pode ser especificado como número de segundos ou um fio:

```php
$httpResponse->setCookie('lang', 'en', '100 days');
```

A opção `$domain` determina quais domínios (origens) podem aceitar cookies. Se não especificado, o cookie é aceito pelo mesmo (sub)domínio que é definido por ele, excluindo seus subdomínios. Se `$domain` for especificado, então os subdomínios também serão incluídos. Portanto, a especificação do `$domain` é menos restritiva do que a omissão. Por exemplo, se `$domain = 'nette.org'`, o cookie também está disponível em todos os subdomínios como `doc.nette.org`.

Você pode usar as constantes `Response::SameSiteLax`, `SameSiteStrict` e `SameSiteNone` para o valor `$sameSite`.


deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method]
--------------------------------------------------------------------------------------------------------
Elimina um cookie. Os valores padrão dos parâmetros são:
- `$path` com escopo para todos os diretórios (`'/'`)
- `$domain` com escopo do (sub)domínio atual, mas não de seus subdomínios
- `$secure` é afetado pelos ajustes na [configuração#HTTP cookie |configuration#HTTP cookie]

```php
$httpResponse->deleteCookie('lang');
```

Resposta HTTP

Nette encapsula a resposta HTTP em objetos com uma API compreensível enquanto fornece um filtro de sanitização.

Uma resposta HTTP é um objeto Nette\Http\Response, que você obtém passando-o usando a injeção de dependência. Nos apresentadores, basta ligar para $httpResponse = $this->getHttpResponse().

Instalação e requisitos

Nette\Http\Resposta

Unlike Nette\Http\Request, this object is mutable, so you can use setters to change the state, ie to send headers. Lembre-se que todos os setters devem ser chamados antes que qualquer saída real seja enviada. O método isSent() informa se a saída foi enviada. Se ele retornar true, cada tentativa de enviar um cabeçalho lançará uma exceção Nette\InvalidStateException.

setCode(int $code, ?string $reason=null)

Altera um código de resposta de status. Para melhor legibilidade do código fonte, é recomendado o uso de constantes pré-definidas em vez de números reais.

$httpResponse->setCode(Nette\Http\Response::S404_NotFound);

getCode(): int

Retorna o código de status da resposta.

isSent(): bool

Retorna se os cabeçalhos já foram enviados do servidor para o navegador, portanto não é mais possível enviar cabeçalhos ou alterar o código de status.

setHeader(string $name, string $value)

Envia um cabeçalho HTTP e **sobreescritas*** cabeçalho previamente enviado com o mesmo nome.

$httpResponse->setHeader('Pragma', 'no-cache');

addHeader(string $name, string $value)

Envia um cabeçalho HTTP e não sobrescreve cabeçalho previamente enviado com o mesmo nome.

$httpResponse->addHeader('Accept', 'application/json');
$httpResponse->addHeader('Accept', 'application/xml');

deleteHeader(string $name)

Elimina um cabeçalho HTTP previamente enviado.

getHeader(string $header): ?string

Devolve o cabeçalho HTTP enviado, ou null se ele não existir. O parâmetro não diferencia maiúsculas e minúsculas de minúsculas.

$pragma = $httpResponse->getHeader('Pragma');

getHeaders(): array

Devolve todos os cabeçalhos HTTP enviados como matriz associativa.

$headers = $httpResponse->getHeaders();
echo $headers['Pragma'];

setContentType(string $type, ?string $charset=null)

Envia o cabeçalho Content-Type.

$httpResponse->setContentType('text/plain', 'UTF-8');

redirect(string $url, int $code=self::S302_Found)void

Redireciona para outra URL. Não se esqueça de desistir do roteiro então.

$httpResponse->redirect('http://example.com');
exit;

setExpiration(?string $time)

Define a expiração do documento HTTP usando os cabeçalhos Cache-Control e Expires. O parâmetro é um intervalo de tempo (como texto) ou null, o que desativa o cache.

// o cache do navegador expira em uma hora
$httpResponse->setExpiration('1 hour');

sendAsFile(string $fileName)

A resposta deve ser baixada com Salvar como diálogo com nome especificado. Ele próprio não envia nenhum arquivo para a saída.

$httpResponse->sendAsFile('invoice.pdf');

setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null)

Envia um cookie. Valores de parâmetros padrão:

$path '/' com escopo para todos os caminhos no (sub)domínio (configurável)
$domain null com escopo do (sub)domínio atual, mas não de seus subdomínios (configurável)
$secure true se o site estiver rodando em HTTPS, caso contrário false (configurável)
$httpOnly true cookie é inacessível ao JavaScript
$sameSite 'Lax' cookie não tem que ser enviado quando acessado de outra origem

Você pode alterar os valores padrão dos parâmetros $path, $domain e $secure na configuração#HTTP cookie.

O tempo pode ser especificado como número de segundos ou um fio:

$httpResponse->setCookie('lang', 'en', '100 days');

A opção $domain determina quais domínios (origens) podem aceitar cookies. Se não especificado, o cookie é aceito pelo mesmo (sub)domínio que é definido por ele, excluindo seus subdomínios. Se $domain for especificado, então os subdomínios também serão incluídos. Portanto, a especificação do $domain é menos restritiva do que a omissão. Por exemplo, se $domain = 'nette.org', o cookie também está disponível em todos os subdomínios como doc.nette.org.

Você pode usar as constantes Response::SameSiteLax, SameSiteStrict e SameSiteNone para o valor $sameSite.

deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null)void

Elimina um cookie. Os valores padrão dos parâmetros são:

  • $path com escopo para todos os diretórios ('/')
  • $domain com escopo do (sub)domínio atual, mas não de seus subdomínios
  • $secure é afetado pelos ajustes na configuração#HTTP cookie
$httpResponse->deleteCookie('lang');