Odgovor HTTP

Nette inkapsulira HTTP odgovor v objekte z razumljivim API-jem.

HTTP odgovor predstavlja objekt Nette\Http\Response. Če delate z Nette, ta objekt samodejno ustvari ogrodje in si ga lahko pustite predati s pomočjo dependency injection. V presenterjih je dovolj le poklicati metodo $this->getHttpResponse().

Namestitev in zahteve

Nette\Http\Response

Objekt je za razliko od Nette\Http\Request spremenljiv (mutable), torej s pomočjo nastavitvenih metod lahko spreminjate stanje, torej npr. pošiljate glave. Ne pozabite, da morajo biti vse nastavitvene metode poklicane pred pošiljanjem kakršnega koli izpisa. Ali je bil izpis že poslan, pove metoda isSent(). Če vrača true, vsak poskus pošiljanja glave sproži izjemo Nette\InvalidStateException.

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

Spremeni statusno kodo odgovora. Zaradi boljše razumljivosti izvorne kode priporočamo, da za kodo namesto številk uporabljate preddefinirane konstante.

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

getCode(): int

Vrača statusno kodo odgovora.

isSent(): bool

Vrača, ali so bile glave že poslane s strežnika v brskalnik, in torej ni več mogoče pošiljati glav ali spreminjati statusne kode.

setHeader (string $name, string $value)

Pošlje HTTP glavo in prepiše prej poslano glavo istega imena.

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

addHeader (string $name, string $value)

Pošlje HTTP glavo in ne prepiše prej poslane glave istega imena.

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

deleteHeader (string $name)

Izbriše prej poslano HTTP glavo.

getHeader (string $header): ?string

Vrača poslano HTTP glavo ali null, če takšna ne obstaja. Parameter je neobčutljiv na velikost črk.

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

getHeaders(): array

Vrača vse poslane HTTP glave kot asociativno polje.

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

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

Spremeni glavo Content-Type.

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

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

Preusmeri na drug URL. Ne pozabite nato končati skripta.

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

setExpiration (?string $time)

Nastavi potek HTTP dokumenta s pomočjo glav Cache-Control in Expires. Parameter je bodisi časovni interval (kot besedilo) ali null, kar onemogoči predpomnjenje.

// predpomnilnik v brskalniku poteče čez eno uro
$httpResponse->setExpiration('1 hour');

sendAsFile (string $fileName)

Odgovor bo prenesen s pomočjo pogovornega okna Shrani kot pod navedenim imenom. Same datoteke pri tem ne pošilja.

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

Pošlje piškotek. Privzete vrednosti parametrov:

$path '/' piškotek ima doseg na vse poti v (pod)domeni (nastavljivo)
$domain null kar pomeni z dosegom na trenutno (pod)domeno, vendar ne njenih poddomen (nastavljivo)
$secure true če spletno mesto teče na HTTPS, sicer false (nastavljivo)
$httpOnly true piškotek je za JavaScript nedostopen
$sameSite 'Lax' piškotek ni nujno poslan pri dostopu iz druge domene

Privzete vrednosti parametrov $path, $domain in $secure lahko spremenite v konfiguraciji.

Čas lahko navajate kot število sekund ali niz:

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

Parameter $domain določa, katere domene lahko sprejemajo piškotek. Če ni naveden, piškotek sprejema ista (pod)domena, kot ga je nastavila, vendar ne njenih poddomen. Če je $domain določen, so vključene tudi poddomene. Zato je navedba $domain manj omejujoča kot izpustitev. Na primer, pri $domain = 'nette.org' so piškotki dostopni tudi na vseh poddomenah kot doc.nette.org.

Za vrednost $sameSite lahko uporabite konstante Response::SameSiteLax, SameSiteStrict in SameSiteNone.

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

Izbriše piškotek. Privzete vrednosti parametrov so:

  • $path z dosegom na vse imenike ('/')
  • $domain z dosegom na trenutno (pod)domeno, vendar ne njenih poddomen
  • $secure se ravna po nastavitvah v konfiguraciji
$httpResponse->deleteCookie('lang');
različica: 4.0