Nette Documentation Preview

syntax
HTTP Yapılandırması
*******************

.[perex]
Nette HTTP için yapılandırma seçeneklerine genel bakış.

Tüm framework'ü değil de yalnızca bu kütüphaneyi kullanıyorsanız, [yapılandırmayı nasıl yükleyeceğiniz |bootstrap:] hakkında bilgi edinin.


HTTP Başlıkları
===============

```neon
http:
	# her istekle gönderilecek başlıklar
	headers:
		X-Powered-By: MyCMS
		X-Content-Type-Options: nosniff
		X-XSS-Protection: '1; mode=block'

	# X-Frame-Options başlığını etkiler
	frames: ...      # (string|bool) varsayılan 'SAMEORIGIN'
```

Framework, güvenlik nedeniyle, sayfanın başka bir sayfa içinde ( `<iframe>` öğesinde) yalnızca aynı alan adında bulunuyorsa görüntülenebileceğini söyleyen `X-Frame-Options: SAMEORIGIN` başlığını gönderir. Bu bazı durumlarda istenmeyebilir (örneğin, Facebook için bir uygulama geliştiriyorsanız), davranış bu nedenle `frames: http://allowed-host.com` veya `frames: true` ayarlanarak değiştirilebilir.


Content Security Policy
-----------------------

`Content-Security-Policy` (bundan sonra CSP) başlıklarını kolayca oluşturabilirsiniz, açıklamaları [CSP açıklaması |https://content-security-policy.com] içinde bulunabilir. CSP yönergeleri (ör. `script-src`) ya belirtimlere göre dizeler olarak ya da daha iyi okunabilirlik için değer dizileri olarak yazılabilir. O zaman `'self'` gibi anahtar kelimelerin etrafına tırnak işareti koymaya gerek yoktur. Nette ayrıca otomatik olarak bir `nonce` değeri oluşturur, böylece başlıkta örneğin `'nonce-y4PopTLM=='` olacaktır.

```neon
http:
	# Content Security Policy
	csp:
		# CSP belirtimine göre dize biçimi
		default-src: "'self' https://example.com"

		# değer dizisi
		script-src:
			- nonce
			- strict-dynamic
			- self
			- https://example.com

		# anahtarlar durumunda bool
		upgrade-insecure-requests: true
		block-all-mixed-content: false
```

Şablonlarda `<script n:nonce>...</script>` kullanın ve nonce değeri otomatik olarak eklenecektir. Nette'de güvenli web siteleri yapmak gerçekten kolaydır.

Benzer şekilde, `Content-Security-Policy-Report-Only` (CSP ile eş zamanlı olarak kullanılabilir) ve [Feature Policy|https://developers.google.com/web/updates/2018/06/feature-policy] başlıkları da oluşturulabilir:

```neon
http:
	# Content Security Policy Report-Only
	cspReportOnly:
		default-src: self
		report-uri: 'https://my-report-uri-endpoint'

	# Feature Policy
	featurePolicy:
		unsized-media: none
		geolocation:
			- self
			- https://example.com
```


HTTP çerezi
-----------

[Nette\Http\Response::setCookie()|response#setCookie] metodunun ve oturumun bazı parametrelerinin varsayılan değerlerini değiştirebilirsiniz.

```neon
http:
	# yola göre çerez kapsamı
	cookiePath: ...          # (string) varsayılan '/'

	# çerezleri kabul eden alan adları
	cookieDomain: 'example.com'  # (string|domain) varsayılan ayarlanmamış

	# çerezi yalnızca HTTPS üzerinden gönder?
	cookieSecure: ...        # (bool|auto) varsayılan auto

	# Nette tarafından CSRF koruması olarak kullanılan çerezin gönderilmesini devre dışı bırakır
	disableNetteCookie: ...  # (bool) varsayılan false
```

`cookieDomain` niteliği, hangi alan adlarının çerezi kabul edebileceğini belirtir. Belirtilmezse, çerez onu ayarlayan aynı (alt) alan adı tarafından kabul edilir, *ancak* alt alan adları tarafından değil. `cookieDomain` belirtilirse, alt alan adları da dahil edilir. Bu nedenle, `cookieDomain` belirtmek, atlamaktan daha az kısıtlayıcıdır.

Örneğin, `cookieDomain: nette.org` ile çerezler `doc.nette.org` gibi tüm alt alan adlarında da kullanılabilir. Aynı şey özel `domain` değeriyle, yani `cookieDomain: domain` ile de elde edilebilir.

`cookieSecure` niteliğindeki varsayılan `auto` değeri, web sitesi HTTPS üzerinde çalışıyorsa, çerezlerin `Secure` bayrağıyla gönderileceği ve dolayısıyla yalnızca HTTPS üzerinden erişilebilir olacağı anlamına gelir.


HTTP proxy
----------

Web sitesi bir HTTP proxy arkasında çalışıyorsa, HTTPS üzerinden bağlantı algılamasının ve ayrıca istemcinin IP adresinin doğru çalışması için IP adresini belirtin. Yani [Nette\Http\Request::getRemoteAddress()|request#getRemoteAddress] ve [isSecured()|request#isSecured] fonksiyonlarının doğru değerleri döndürmesi ve şablonlarda `https:` protokolü ile bağlantıların oluşturulması için.

```neon
http:
	# IP adresi, aralık (ör. 127.0.0.1/8) veya bu değerlerin dizisi
	proxy: 127.0.0.1       # (string|string[]) varsayılan ayarlanmamış
```


Oturum (Session)
================

Temel [oturum |sessions] ayarları:

```neon
session:
	# Tracy Bar'da oturum panelini göster?
	debugger: ...        # (bool) varsayılan false

	# oturumun sona ereceği etkinlik dışı kalma süresi
	expiration: 14 days  # (string) varsayılan '3 hours'

	# oturum ne zaman başlatılmalı?
	autoStart: ...       # (smart|always|never) varsayılan 'smart'

	# handler, SessionHandlerInterface arayüzünü uygulayan servis
	handler: @handlerService
```

`autoStart` seçeneği, oturumun ne zaman başlatılacağını kontrol eder. `always` değeri, oturumun her zaman uygulamanın başlatılmasıyla birlikte başlatılacağı anlamına gelir. `smart` değeri, oturumun yalnızca zaten varsa veya ondan okumak veya ona yazmak istediğimiz anda uygulamanın başlangıcında başlatılacağı anlamına gelir. Ve son olarak, `never` değeri oturumun otomatik olarak başlatılmasını yasaklar.

Ayrıca, tüm PHP [oturum yönergeleri |https://www.php.net/manual/en/session.configuration.php] (camelCase biçiminde) ve ayrıca [readAndClose |https://www.php.net/manual/en/function.session-start.php#refsect1-function.session-start-parameters] ayarlanabilir. Örnek:

```neon
session:
	# 'session.name' 'name' olarak yazılır
	name: MYID

	# 'session.save_path' 'savePath' olarak yazılır
	savePath: "%tempDir%/sessions"
```


Oturum çerezi
-------------

Oturum çerezi [diğer çerezler |#HTTP cookie] ile aynı parametrelerle gönderilir, ancak bunlar sizin için değiştirilebilir:

```neon
session:
	# çerezleri kabul eden alan adları
	cookieDomain: 'example.com'   # (string|domain)

	# başka bir alan adından erişimde kısıtlama
	cookieSamesite: None          # (Strict|Lax|None) varsayılan Lax
```

`cookieSamesite` niteliği, çerezin [başka bir alan adından erişim |nette:glossary#SameSite cookie] sırasında gönderilip gönderilmeyeceğini etkiler, bu da [Cross-Site Request Forgery |nette:glossary#cross-site-request-forgery-csrf] (CSRF) saldırılarına karşı bir miktar koruma sağlar.


DI Servisleri
=============

Bu servisler DI konteynerine eklenir:

| İsim            | Tip                        | Açıklama
|-----------------------------------------------------
| `http.request`	  | [api:Nette\Http\Request]   | [HTTP isteği| request]
| `http.response`	  | [api:Nette\Http\Response]  | [HTTP yanıtı| response]
| `session.session`   | [api:Nette\Http\Session]   | [oturum yönetimi| sessions]

HTTP Yapılandırması

Nette HTTP için yapılandırma seçeneklerine genel bakış.

Tüm framework'ü değil de yalnızca bu kütüphaneyi kullanıyorsanız, yapılandırmayı nasıl yükleyeceğiniz hakkında bilgi edinin.

HTTP Başlıkları

http:
	# her istekle gönderilecek başlıklar
	headers:
		X-Powered-By: MyCMS
		X-Content-Type-Options: nosniff
		X-XSS-Protection: '1; mode=block'

	# X-Frame-Options başlığını etkiler
	frames: ...      # (string|bool) varsayılan 'SAMEORIGIN'

Framework, güvenlik nedeniyle, sayfanın başka bir sayfa içinde ( <iframe> öğesinde) yalnızca aynı alan adında bulunuyorsa görüntülenebileceğini söyleyen X-Frame-Options: SAMEORIGIN başlığını gönderir. Bu bazı durumlarda istenmeyebilir (örneğin, Facebook için bir uygulama geliştiriyorsanız), davranış bu nedenle frames: http://allowed-host.com veya frames: true ayarlanarak değiştirilebilir.

Content Security Policy

Content-Security-Policy (bundan sonra CSP) başlıklarını kolayca oluşturabilirsiniz, açıklamaları CSP açıklaması içinde bulunabilir. CSP yönergeleri (ör. script-src) ya belirtimlere göre dizeler olarak ya da daha iyi okunabilirlik için değer dizileri olarak yazılabilir. O zaman 'self' gibi anahtar kelimelerin etrafına tırnak işareti koymaya gerek yoktur. Nette ayrıca otomatik olarak bir nonce değeri oluşturur, böylece başlıkta örneğin 'nonce-y4PopTLM==' olacaktır.

http:
	# Content Security Policy
	csp:
		# CSP belirtimine göre dize biçimi
		default-src: "'self' https://example.com"

		# değer dizisi
		script-src:
			- nonce
			- strict-dynamic
			- self
			- https://example.com

		# anahtarlar durumunda bool
		upgrade-insecure-requests: true
		block-all-mixed-content: false

Şablonlarda <script n:nonce>...</script> kullanın ve nonce değeri otomatik olarak eklenecektir. Nette'de güvenli web siteleri yapmak gerçekten kolaydır.

Benzer şekilde, Content-Security-Policy-Report-Only (CSP ile eş zamanlı olarak kullanılabilir) ve Feature Policy başlıkları da oluşturulabilir:

http:
	# Content Security Policy Report-Only
	cspReportOnly:
		default-src: self
		report-uri: 'https://my-report-uri-endpoint'

	# Feature Policy
	featurePolicy:
		unsized-media: none
		geolocation:
			- self
			- https://example.com

HTTP çerezi

Nette\Http\Response::setCookie() metodunun ve oturumun bazı parametrelerinin varsayılan değerlerini değiştirebilirsiniz.

http:
	# yola göre çerez kapsamı
	cookiePath: ...          # (string) varsayılan '/'

	# çerezleri kabul eden alan adları
	cookieDomain: 'example.com'  # (string|domain) varsayılan ayarlanmamış

	# çerezi yalnızca HTTPS üzerinden gönder?
	cookieSecure: ...        # (bool|auto) varsayılan auto

	# Nette tarafından CSRF koruması olarak kullanılan çerezin gönderilmesini devre dışı bırakır
	disableNetteCookie: ...  # (bool) varsayılan false

cookieDomain niteliği, hangi alan adlarının çerezi kabul edebileceğini belirtir. Belirtilmezse, çerez onu ayarlayan aynı (alt) alan adı tarafından kabul edilir, ancak alt alan adları tarafından değil. cookieDomain belirtilirse, alt alan adları da dahil edilir. Bu nedenle, cookieDomain belirtmek, atlamaktan daha az kısıtlayıcıdır.

Örneğin, cookieDomain: nette.org ile çerezler doc.nette.org gibi tüm alt alan adlarında da kullanılabilir. Aynı şey özel domain değeriyle, yani cookieDomain: domain ile de elde edilebilir.

cookieSecure niteliğindeki varsayılan auto değeri, web sitesi HTTPS üzerinde çalışıyorsa, çerezlerin Secure bayrağıyla gönderileceği ve dolayısıyla yalnızca HTTPS üzerinden erişilebilir olacağı anlamına gelir.

HTTP proxy

Web sitesi bir HTTP proxy arkasında çalışıyorsa, HTTPS üzerinden bağlantı algılamasının ve ayrıca istemcinin IP adresinin doğru çalışması için IP adresini belirtin. Yani Nette\Http\Request::getRemoteAddress() ve isSecured() fonksiyonlarının doğru değerleri döndürmesi ve şablonlarda https: protokolü ile bağlantıların oluşturulması için.

http:
	# IP adresi, aralık (ör. 127.0.0.1/8) veya bu değerlerin dizisi
	proxy: 127.0.0.1       # (string|string[]) varsayılan ayarlanmamış

Oturum (Session)

Temel oturum ayarları:

session:
	# Tracy Bar'da oturum panelini göster?
	debugger: ...        # (bool) varsayılan false

	# oturumun sona ereceği etkinlik dışı kalma süresi
	expiration: 14 days  # (string) varsayılan '3 hours'

	# oturum ne zaman başlatılmalı?
	autoStart: ...       # (smart|always|never) varsayılan 'smart'

	# handler, SessionHandlerInterface arayüzünü uygulayan servis
	handler: @handlerService

autoStart seçeneği, oturumun ne zaman başlatılacağını kontrol eder. always değeri, oturumun her zaman uygulamanın başlatılmasıyla birlikte başlatılacağı anlamına gelir. smart değeri, oturumun yalnızca zaten varsa veya ondan okumak veya ona yazmak istediğimiz anda uygulamanın başlangıcında başlatılacağı anlamına gelir. Ve son olarak, never değeri oturumun otomatik olarak başlatılmasını yasaklar.

Ayrıca, tüm PHP oturum yönergeleri (camelCase biçiminde) ve ayrıca readAndClose ayarlanabilir. Örnek:

session:
	# 'session.name' 'name' olarak yazılır
	name: MYID

	# 'session.save_path' 'savePath' olarak yazılır
	savePath: "%tempDir%/sessions"

Oturum çerezi

Oturum çerezi diğer çerezler ile aynı parametrelerle gönderilir, ancak bunlar sizin için değiştirilebilir:

session:
	# çerezleri kabul eden alan adları
	cookieDomain: 'example.com'   # (string|domain)

	# başka bir alan adından erişimde kısıtlama
	cookieSamesite: None          # (Strict|Lax|None) varsayılan Lax

cookieSamesite niteliği, çerezin başka bir alan adından erişim sırasında gönderilip gönderilmeyeceğini etkiler, bu da Cross-Site Request Forgery (CSRF) saldırılarına karşı bir miktar koruma sağlar.

DI Servisleri

Bu servisler DI konteynerine eklenir:

İsim Tip Açıklama
http.request Nette\Http\Request HTTP isteği
http.response Nette\Http\Response HTTP yanıtı
session.session Nette\Http\Session oturum yönetimi