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