Nette Documentation Preview

syntax
HTTP Response
*************

.[perex]
Nette incapsula la risposta HTTP in oggetti con un'API comprensibile.

La risposta HTTP è rappresentata dall'oggetto [api:Nette\Http\Response]. Se lavorate con Nette, questo oggetto viene creato automaticamente dal framework e potete riceverlo tramite [dependency injection |dependency-injection:passing-dependencies]. Nei presenter, basta chiamare il metodo `$this->getHttpResponse()`.

→ [Installazione e requisiti |@home#Installazione]


Nette\Http\Response
===================

L'oggetto, a differenza di [Nette\Http\Request|request], è mutabile, quindi potete modificare lo stato usando i setter, ad esempio inviare header. Ricordate che tutti i setter devono essere chiamati **prima di inviare qualsiasi output.** Il metodo `isSent()` indica se l'output è già stato inviato. Se restituisce `true`, ogni tentativo di inviare un header lancerà un'eccezione `Nette\InvalidStateException`.


setCode(int $code, ?string $reason=null) .[method]
--------------------------------------------------
Modifica il [codice di stato della risposta |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10]. Per una migliore comprensibilità del codice sorgente, si consiglia di utilizzare le [costanti predefinite |api:Nette\Http\IResponse] per il codice invece dei numeri.

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


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


isSent(): bool .[method]
------------------------
Restituisce se gli header sono già stati inviati dal server al browser, e quindi non è più possibile inviare header o modificare il codice di stato.


setHeader(string $name, string $value) .[method]
------------------------------------------------
Invia un header HTTP e **sovrascrive** un header precedentemente inviato con lo stesso nome.

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


addHeader(string $name, string $value) .[method]
------------------------------------------------
Invia un header HTTP e **non sovrascrive** un header precedentemente inviato con lo stesso nome.

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


deleteHeader(string $name) .[method]
------------------------------------
Elimina un header HTTP precedentemente inviato.


getHeader(string $header): ?string .[method]
--------------------------------------------
Restituisce l'header HTTP inviato o `null` se non esiste. Il parametro è case-insensitive.

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


getHeaders(): array .[method]
-----------------------------
Restituisce tutti gli header HTTP inviati come array associativo.

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


setContentType(string $type, ?string $charset=null) .[method]
-------------------------------------------------------------
Modifica l'header `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 dimenticate di terminare lo script successivamente.

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


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

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


sendAsFile(string $fileName) .[method]
--------------------------------------
La risposta verrà scaricata tramite la finestra di dialogo *Salva con nome* con il nome specificato. Il file stesso non viene inviato.

```php
$httpResponse->sendAsFile('faktura.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. I valori predefiniti dei parametri sono:

| `$path`     | `'/'`   | il cookie ha scope su tutti i percorsi nel (sotto)dominio *(configurabile)*
| `$domain`   | `null`  | che significa con scope sul (sotto)dominio corrente, ma non sui suoi sottodomini *(configurabile)*
| `$secure`   | `true`  | se il sito web viene eseguito su HTTPS, altrimenti `false` *(configurabile)*
| `$httpOnly` | `true`  | il cookie non è accessibile da JavaScript
| `$sameSite` | `'Lax'` | il cookie potrebbe non essere inviato durante l'[accesso da un altro dominio |nette:glossary#Cookie SameSite]

I valori predefiniti dei parametri `$path`, `$domain` e `$secure` possono essere modificati nella [configurazione |configuration#Cookie HTTP].

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

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

Il parametro `$domain` specifica quali domini possono accettare il cookie. Se non specificato, il cookie viene accettato dallo stesso (sotto)dominio che lo ha impostato, ma non dai suoi sottodomini. Se `$domain` è specificato, vengono inclusi anche i sottodomini. Pertanto, specificare `$domain` è meno restrittivo che ometterlo. Ad esempio, con `$domain = 'nette.org'`, i cookie sono disponibili anche su tutti i sottodomini come `doc.nette.org`.

Per il valore `$sameSite` potete usare le costanti `Response::SameSiteLax`, `Response::SameSiteStrict` e `Response::SameSiteNone`.


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 scope su tutte le directory (`'/'`)
- `$domain` con scope sul (sotto)dominio corrente, ma non sui suoi sottodomini
- `$secure` è determinato dalle impostazioni nella [configurazione |configuration#Cookie HTTP]

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

HTTP Response

Nette incapsula la risposta HTTP in oggetti con un'API comprensibile.

La risposta HTTP è rappresentata dall'oggetto Nette\Http\Response. Se lavorate con Nette, questo oggetto viene creato automaticamente dal framework e potete riceverlo tramite dependency injection. Nei presenter, basta chiamare il metodo $this->getHttpResponse().

Installazione e requisiti

Nette\Http\Response

L'oggetto, a differenza di Nette\Http\Request, è mutabile, quindi potete modificare lo stato usando i setter, ad esempio inviare header. Ricordate che tutti i setter devono essere chiamati prima di inviare qualsiasi output. Il metodo isSent() indica se l'output è già stato inviato. Se restituisce true, ogni tentativo di inviare un header lancerà un'eccezione Nette\InvalidStateException.

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

Modifica il codice di stato della risposta. Per una migliore comprensibilità del codice sorgente, si consiglia di utilizzare le costanti predefinite per il codice invece dei numeri.

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

getCode(): int

Restituisce il codice di stato della risposta.

isSent(): bool

Restituisce se gli header sono già stati inviati dal server al browser, e quindi non è più possibile inviare header o modificare il codice di stato.

setHeader(string $name, string $value)

Invia un header HTTP e sovrascrive un header precedentemente inviato con lo stesso nome.

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

addHeader(string $name, string $value)

Invia un header HTTP e non sovrascrive un header precedentemente inviato con lo stesso nome.

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

deleteHeader(string $name)

Elimina un header HTTP precedentemente inviato.

getHeader(string $header): ?string

Restituisce l'header HTTP inviato o null se non esiste. Il parametro è case-insensitive.

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

getHeaders(): array

Restituisce tutti gli header HTTP inviati come array associativo.

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

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

Modifica l'header Content-Type.

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

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

Reindirizza a un altro URL. Non dimenticate di terminare lo script successivamente.

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

setExpiration(?string $time)

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

// la cache nel browser scadrà tra un'ora
$httpResponse->setExpiration('1 hour');

sendAsFile(string $fileName)

La risposta verrà scaricata tramite la finestra di dialogo Salva con nome con il nome specificato. Il file stesso non viene inviato.

$httpResponse->sendAsFile('faktura.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. I valori predefiniti dei parametri sono:

$path '/' il cookie ha scope su tutti i percorsi nel (sotto)dominio (configurabile)
$domain null che significa con scope sul (sotto)dominio corrente, ma non sui suoi sottodomini (configurabile)
$secure true se il sito web viene eseguito su HTTPS, altrimenti false (configurabile)
$httpOnly true il cookie non è accessibile da JavaScript
$sameSite 'Lax' il cookie potrebbe non essere inviato durante l'accesso da un altro dominio

I valori predefiniti dei parametri $path, $domain e $secure possono essere modificati nella configurazione.

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

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

Il parametro $domain specifica quali domini possono accettare il cookie. Se non specificato, il cookie viene accettato dallo stesso (sotto)dominio che lo ha impostato, ma non dai suoi sottodomini. Se $domain è specificato, vengono inclusi anche i sottodomini. Pertanto, specificare $domain è meno restrittivo che ometterlo. Ad esempio, con $domain = 'nette.org', i cookie sono disponibili anche su tutti i sottodomini come doc.nette.org.

Per il valore $sameSite potete usare le costanti Response::SameSiteLax, Response::SameSiteStrict e Response::SameSiteNone.

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

Elimina un cookie. I valori predefiniti dei parametri sono:

  • $path con scope su tutte le directory ('/')
  • $domain con scope sul (sotto)dominio corrente, ma non sui suoi sottodomini
  • $secure è determinato dalle impostazioni nella configurazione
$httpResponse->deleteCookie('lang');