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');
versione: 4.0