HTTP Yanıtı

Nette, HTTP yanıtını anlaşılabilir bir API ile nesneler halinde kapsüllerken bir sanitizasyon filtresi sağlar.

HTTP yanıtı, bağımlılık enjeksiyonu kullanarak geçirerek elde ettiğiniz bir Nette\Http\Response nesnesidir. Sunucularda basitçe $httpResponse = $this->getHttpResponse() adresini çağırın.

Kurulum ve gereksinimler

Nette\Http\Yanıt

Nette\Http\Request'in aksine, bu nesne değişkendir, bu nedenle durumu değiştirmek, yani başlıkları göndermek için ayarlayıcıları kullanabilirsiniz. Tüm ayarlayıcıların gerçek çıktı gönderilmeden önce çağrılması gerektiğini unutmayın. isSent() yöntemi çıktının gönderilip gönderilmediğini söyler. Eğer true döndürürse, her başlık gönderme girişimi bir Nette\InvalidStateException istisnası fırlatır.

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

Bir durum yanıt kodunu değiştirir. Daha iyi kaynak kodu okunabilirliği için gerçek sayılar yerine önceden tanımlanmış sabitlerin kullanılması önerilir.

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

getCode(): int

Yanıtın durum kodunu döndürür.

isSent(): bool

Başlıkların sunucudan tarayıcıya zaten gönderilmiş olup olmadığını döndürür, bu nedenle artık başlık göndermek veya durum kodunu değiştirmek mümkün değildir.

setHeader(string $name, string $value)

Bir HTTP başlığı gönderir ve daha önce gönderilen aynı adlı başlığın üzerine yazar.

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

addHeader(string $name, string $value)

Bir HTTP başlığı gönderir ve daha önce gönderilen aynı adlı başlığın üzerine yazmaz.

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

deleteHeader(string $name)

Önceden gönderilmiş bir HTTP başlığını siler.

getHeader(string $header): ?string

Gönderilen HTTP başlığını veya yoksa null adresini döndürür. Parametre büyük/küçük harfe duyarlı değildir.

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

getHeaders(): array

Gönderilen tüm HTTP başlıklarını ilişkisel dizi olarak döndürür.

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

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

Content-Type başlığını gönderir.

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

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

Başka bir URL'ye yönlendirir. Daha sonra komut dosyasından çıkmayı unutmayın.

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

setExpiration(?string $time)

Cache-Control ve Expires başlıklarını kullanarak HTTP belgesinin sona erme süresini ayarlar. Parametre ya bir zaman aralığı (metin olarak) ya da önbelleğe almayı devre dışı bırakan null şeklindedir.

// tarayıcı önbelleğinin süresi bir saat içinde dolar
$httpResponse->setExpiration('1 hour');

sendAsFile(string $fileName)

Yanıt, belirtilen adla Farklı kaydet iletişim kutusu ile indirilmelidir. Çıkışa herhangi bir dosya göndermez.

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

Bir çerez gönderir. Varsayılan parametre değerleri:

$path '/' (alt)etki alanı (yapılandırılabilir) üzerindeki tüm yolların kapsamı ile
$domain null geçerli (alt) etki alanının kapsamı ile, ancak alt etki alanları ile değil (yapılandırılabilir)
$secure true site HTTPS üzerinde çalışıyorsa, aksi takdirde false (yapılandırılabilir)
$httpOnly true çerez JavaScript için erişilemez
$sameSite 'Lax' çerez başka bir kaynaktan erişildiğinde gönderilmek zorunda değildir

$path, $domain ve $secure parametrelerinin varsayılan değerlerini yapılandırma#HTTP çerezi bölümünden değiştirebilirsiniz.

Zaman, saniye sayısı veya bir dize olarak belirtilebilir:

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

$domain seçeneği, hangi etki alanlarının (kökenlerin) çerezleri kabul edebileceğini belirler. Belirtilmezse, çerez, alt alan adları hariç olmak üzere, kendisi tarafından belirlenen aynı (alt) alan adı tarafından kabul edilir. Eğer $domain belirtilirse, alt alan adları da dahil edilir. Bu nedenle, $domain belirtmek, belirtmemekten daha az kısıtlayıcıdır. Örneğin, $domain = 'nette.org', çerezi doc.nette.org gibi tüm alt alan adlarında da kullanılabilir.

$sameSite değeri için Response::SameSiteLax, SameSiteStrict ve SameSiteNone sabitlerini kullanabilirsiniz.

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

Bir çerezi siler. Parametrelerin varsayılan değerleri şunlardır:

  • $path tüm dizinleri kapsayacak şekilde ('/')
  • $domain geçerli (alt) etki alanının kapsamı ile, ancak alt etki alanları ile değil
  • $secure yapılandırma#HTTP çerezi içindeki ayarlardan etkilenir
$httpResponse->deleteCookie('lang');
versiyon: 4.0