Nette Documentation Preview

syntax
Risposta HTTP
*************

.[perex]
Nette incapsula la risposta HTTP in oggetti con un'API comprensibile e fornisce un filtro di sanificazione.

Una risposta HTTP è un oggetto [api:Nette\Http\Response], che si ottiene passandoglielo tramite [dependency injection |dependency-injection:passing-dependencies]. Nei presentatori è sufficiente chiamare `$httpResponse = $this->getHttpResponse()`.

→ [Installazione e requisiti |@home#Installation]


Nettezza Http Risposta .[#toc-nette-http-response]
==================================================

A differenza di [Nette\Http\Request |request], questo oggetto è mutabile, quindi si possono usare i setter per cambiare lo stato, cioè per inviare le intestazioni. Ricordare che tutti i setter **devono essere chiamati prima dell'invio di qualsiasi output effettivo.** Il metodo `isSent()` dice se l'output è stato inviato. Se restituisce `true`, ogni tentativo di inviare un'intestazione lancia un'eccezione `Nette\InvalidStateException`.


setCode(int $code, ?string $reason=null) .[method]
--------------------------------------------------
Cambia un [codice di risposta |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] di stato. Per una migliore leggibilità del codice sorgente, si consiglia di utilizzare [costanti predefinite |api:Nette\Http\IResponse] anziché numeri reali.

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


getCode(): int .[method]
------------------------
Restituisce il codice di stato della risposta.


isSent(): bool .[method]
------------------------
Restituisce se le intestazioni sono già state inviate dal server al browser, quindi non è più possibile inviare intestazioni o modificare il codice di stato.


setHeader(string $name, string $value) .[method]
------------------------------------------------
Invia un'intestazione HTTP e **sovrascrive** l'intestazione dello stesso nome inviata in precedenza.

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


addHeader(string $name, string $value) .[method]
------------------------------------------------
Invia un'intestazione HTTP e **non sovrascrive** l'intestazione dello stesso nome inviata in precedenza.

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


deleteHeader(string $name) .[method]
------------------------------------
Elimina un'intestazione HTTP precedentemente inviata.


getHeader(string $header): ?string .[method]
--------------------------------------------
Restituisce l'intestazione HTTP inviata o `null` se non esiste. Il parametro non fa distinzione tra maiuscole e minuscole.

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


getHeaders(): array .[method]
-----------------------------
Restituisce tutte le intestazioni HTTP inviate come array associativo.

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


setContentType(string $type, ?string $charset=null) .[method]
-------------------------------------------------------------
Invia l'intestazione `Content-Type`.

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


redirect(string $url, int $code=self::S302_Found): void .[method]
-----------------------------------------------------------------
Reindirizza a un altro URL. Non dimenticare di chiudere lo script.

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


setExpiration(?string $time) .[method]
--------------------------------------
Imposta la scadenza del documento HTTP utilizzando le intestazioni `Cache-Control` e `Expires`. Il parametro è un intervallo di tempo (come testo) o `null`, che disabilita la cache.

```php
// la cache del browser scade tra un'ora
$httpResponse->setExpiration('1 hour');
```


sendAsFile(string $fileName) .[method]
--------------------------------------
La risposta deve essere scaricata con la finestra di dialogo *Salva con nome* con il nome specificato. Non invia alcun file in uscita.

```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]
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Invia un cookie. Valori predefiniti dei parametri:

| `$path` | `'/'` | con estensione a tutti i percorsi del (sotto)dominio *(configurabile)*
| `$domain` | `null` | con l'ambito del (sotto)dominio corrente, ma non dei suoi sottodomini *(configurabile)*
| `$secure` | `true` | se il sito funziona su HTTPS, altrimenti `false` *(configurabile)*
| `$httpOnly` | `true` | il cookie è inaccessibile a JavaScript
| `$sameSite` | `'Lax'` | il cookie non deve essere inviato quando si [accede da un'altra origine |nette:glossary#SameSite cookie]

È possibile modificare i valori predefiniti dei parametri `$path`, `$domain` e `$secure` in [configuration#HTTP cookie |configuration#HTTP cookie].

Il tempo può essere specificato come numero di secondi o come stringa:

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

L'opzione `$domain` determina quali domini (origini) possono accettare i cookie. Se non viene specificata, il cookie viene accettato dallo stesso (sotto)dominio impostato, esclusi i sottodomini. Se viene specificato `$domain`, sono inclusi anche i sottodomini. Pertanto, specificare `$domain` è meno restrittivo che ometterlo. Ad esempio, se `$domain = 'nette.org'`, il cookie è disponibile anche su tutti i sottodomini come `doc.nette.org`.

È possibile utilizzare le costanti `Response::SameSiteLax`, `SameSiteStrict` e `SameSiteNone` per il valore `$sameSite`.


deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method]
--------------------------------------------------------------------------------------------------------
Elimina un cookie. I valori predefiniti dei parametri sono:
- `$path` con estensione a tutte le directory (`'/'`)
- `$domain` con ambito del (sotto)dominio corrente, ma non dei suoi sottodomini
- `$secure` è influenzato dalle impostazioni in [configurazione#HTTP cookie |configuration#HTTP cookie]

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

Risposta HTTP

Nette incapsula la risposta HTTP in oggetti con un'API comprensibile e fornisce un filtro di sanificazione.

Una risposta HTTP è un oggetto Nette\Http\Response, che si ottiene passandoglielo tramite dependency injection. Nei presentatori è sufficiente chiamare $httpResponse = $this->getHttpResponse().

Installazione e requisiti

Nettezza Http Risposta

A differenza di Nette\Http\Request, questo oggetto è mutabile, quindi si possono usare i setter per cambiare lo stato, cioè per inviare le intestazioni. Ricordare che tutti i setter devono essere chiamati prima dell'invio di qualsiasi output effettivo. Il metodo isSent() dice se l'output è stato inviato. Se restituisce true, ogni tentativo di inviare un'intestazione lancia un'eccezione Nette\InvalidStateException.

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

Cambia un codice di risposta di stato. Per una migliore leggibilità del codice sorgente, si consiglia di utilizzare costanti predefinite anziché numeri reali.

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

getCode(): int

Restituisce il codice di stato della risposta.

isSent(): bool

Restituisce se le intestazioni sono già state inviate dal server al browser, quindi non è più possibile inviare intestazioni o modificare il codice di stato.

setHeader(string $name, string $value)

Invia un'intestazione HTTP e sovrascrive l'intestazione dello stesso nome inviata in precedenza.

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

addHeader(string $name, string $value)

Invia un'intestazione HTTP e non sovrascrive l'intestazione dello stesso nome inviata in precedenza.

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

deleteHeader(string $name)

Elimina un'intestazione HTTP precedentemente inviata.

getHeader(string $header): ?string

Restituisce l'intestazione HTTP inviata o null se non esiste. Il parametro non fa distinzione tra maiuscole e minuscole.

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

getHeaders(): array

Restituisce tutte le intestazioni HTTP inviate come array associativo.

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

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

Invia l'intestazione Content-Type.

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

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

Reindirizza a un altro URL. Non dimenticare di chiudere lo script.

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

setExpiration(?string $time)

Imposta la scadenza del documento HTTP utilizzando le intestazioni Cache-Control e Expires. Il parametro è un intervallo di tempo (come testo) o null, che disabilita la cache.

// la cache del browser scade tra un'ora
$httpResponse->setExpiration('1 hour');

sendAsFile(string $fileName)

La risposta deve essere scaricata con la finestra di dialogo Salva con nome con il nome specificato. Non invia alcun file in uscita.

$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)

Invia un cookie. Valori predefiniti dei parametri:

$path '/' con estensione a tutti i percorsi del (sotto)dominio (configurabile)
$domain null con l'ambito del (sotto)dominio corrente, ma non dei suoi sottodomini (configurabile)
$secure true se il sito funziona su HTTPS, altrimenti false (configurabile)
$httpOnly true il cookie è inaccessibile a JavaScript
$sameSite 'Lax' il cookie non deve essere inviato quando si accede da un'altra origine

È possibile modificare i valori predefiniti dei parametri $path, $domain e $secure in configuration#HTTP cookie.

Il tempo può essere specificato come numero di secondi o come stringa:

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

L'opzione $domain determina quali domini (origini) possono accettare i cookie. Se non viene specificata, il cookie viene accettato dallo stesso (sotto)dominio impostato, esclusi i sottodomini. Se viene specificato $domain, sono inclusi anche i sottodomini. Pertanto, specificare $domain è meno restrittivo che ometterlo. Ad esempio, se $domain = 'nette.org', il cookie è disponibile anche su tutti i sottodomini come doc.nette.org.

È possibile utilizzare le costanti Response::SameSiteLax, SameSiteStrict e SameSiteNone per il valore $sameSite.

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

Elimina un cookie. I valori predefiniti dei parametri sono:

  • $path con estensione a tutte le directory ('/')
  • $domain con ambito del (sotto)dominio corrente, ma non dei suoi sottodomini
  • $secure è influenzato dalle impostazioni in configurazione#HTTP cookie
$httpResponse->deleteCookie('lang');