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.
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');