Nette Documentation Preview

syntax
Aktualizacja
************


Aktualizacja do wersji 3.4
==========================

Minimalna wymagana wersja PHP to 8.3.

- metoda `Request::isSameSite()` jest przestarzała na rzecz `isFrom()`, która ustala pochodzenie żądania z nagłówków `Sec-Fetch-*`. Automatyczna ochrona formularzy i sygnałów staje się precyzyjniejsza, a jedno zachowanie się zmienia: bezpośrednie wejście (zakładka, ręcznie wpisany adres, odnośnik w e-mailu) nie jest już uznawane za same-site. Jeśli sygnał opiera się na odnośnikach akcji w e-mailach, oznacz go `#[Requires(sameOrigin: false)]`.
- cookie `_nss` jest teraz wysyłane tylko do przeglądarek, które nie wysyłają nagłówka `Sec-Fetch-Site`
- `setCookie()` wysyła atrybut `Max-Age` i wymusza flagę `Secure` dla `SameSite=None` oraz dla cookies partycjonowanych
- enum `SameSite` zastępuje stałe `IResponse::SameSiteLax` itd., które są przestarzałe
- wygaśnięcie interpretowane jest wszędzie tak samo: liczba to względna liczba sekund, ciąg to interwał albo data. Przekazywanie absolutnego uniksowego timestampu jest przestarzałe, a cookie sesyjne reprezentuje `null` zamiast `0`.
- przestarzała metoda `Request::getRemoteHost()` zwraca `null`
- dawno przestarzała klasa `Nette\Http\UserStorage` została usunięta

Całą historię przejścia na nagłówki `Sec-Fetch-*` opowiada artykuł [Ćwierć wieku CSRF |https://blog.nette.org/en/quarter-century-of-csrf].


Aktualizacja do wersji 3.2
==========================

- dane uwierzytelniające z HTTP Basic Authentication nie są już częścią obiektu `Url`, więc `$url->getUser()` i `$url->getPassword()` zwracają pusty ciąg. Odczytasz je nową metodą `$request->getBasicCredentials()`.

Powody tej zmiany wyjaśnia artykuł [Nette Http 3.2: zmiana dostępu do danych uwierzytelniających |https://blog.nette.org/en/nette-http-3-2-change-access-to-credentials].


Aktualizacja do wersji 3.1
==========================

- cookies wysyłane są z flagą `sameSite: Lax`
- `cookieSecure` ma teraz domyślnie wartość 'auto'
- opcja `session.cookieSecure` jest przestarzała, używane jest zamiast niej `http.cookieSecure`
- cookie `nette-samesite` zostało przemianowane na `_nss`
- `Nette\Http\Request::getFile()` przyjmuje tablicę kluczy i zwraca `FileUpload|null`
- `Nette\Http\Session::getCookieParameters()` jest przestarzałe
- `Nette\Http\FileUpload::getName()` zostało przemianowane na `getUntrustedName()`
- `Nette\Http\Url`: `getBasePath()`, `getBaseUrl()` i `getRelativeUrl()` są przestarzałe (metody te są częścią `UrlScript`)
- `Nette\Http\Response::$cookieHttpOnly` jest przestarzałe
- `Nette\Http\FileUpload::getImageSize()` zwraca parę `[width, height]`
- przy `autoStart: smart` (domyślne) sesja nie jest już uruchamiana zaraz po starcie aplikacji tylko dlatego, że przeglądarka wysłała cookie sesyjne; uruchamia się przy pierwszym odczycie albo zapisie. Dodano wartości `always` i `never`.
- gdy przeglądarka wyśle ID sesji, dla którego żadna sesja nie istnieje, Nette usuwa cookie zamiast tworzyć nową sesję
- do dostępu do sekcji sesji preferuj metody `set()`, `get()` i `remove()`; w przeciwieństwie do dostępu przez właściwości poprawnie rozróżniają odczyt od zapisu i nie uruchamiają sesji niepotrzebnie
- wartości domyślne `cookiePath` i `cookieDomain` można ustawić w konfiguracji

Zachowanie sesji opisuje szczegółowo artykuł [Nette Http 3.1: znacznie sprytniejsze sesje |https://blog.nette.org/en/nette-http-3-1-much-smarter-sessions].


Aktualizacja do wersji 3.0
==========================

- obiekt `Nette\Http\UrlScript` (zwracany np. przez `Nette\Http\Request::getUrl()`) jest teraz niezmienny
- w `new Nette\Http\Url('abcd')` `abcd` reprezentuje ścieżkę, a nie domenę; od 3.0 `(new Nette\Http\Url('abcd'))->setScheme('http')` poprawnie generuje `http:abcd` zamiast wcześniejszego `http://abcd`

Aktualizacja

Aktualizacja do wersji 3.4

Minimalna wymagana wersja PHP to 8.3.

  • metoda Request::isSameSite() jest przestarzała na rzecz isFrom(), która ustala pochodzenie żądania z nagłówków Sec-Fetch-*. Automatyczna ochrona formularzy i sygnałów staje się precyzyjniejsza, a jedno zachowanie się zmienia: bezpośrednie wejście (zakładka, ręcznie wpisany adres, odnośnik w e-mailu) nie jest już uznawane za same-site. Jeśli sygnał opiera się na odnośnikach akcji w e-mailach, oznacz go #[Requires(sameOrigin: false)].
  • cookie _nss jest teraz wysyłane tylko do przeglądarek, które nie wysyłają nagłówka Sec-Fetch-Site
  • setCookie() wysyła atrybut Max-Age i wymusza flagę Secure dla SameSite=None oraz dla cookies partycjonowanych
  • enum SameSite zastępuje stałe IResponse::SameSiteLax itd., które są przestarzałe
  • wygaśnięcie interpretowane jest wszędzie tak samo: liczba to względna liczba sekund, ciąg to interwał albo data. Przekazywanie absolutnego uniksowego timestampu jest przestarzałe, a cookie sesyjne reprezentuje null zamiast 0.
  • przestarzała metoda Request::getRemoteHost() zwraca null
  • dawno przestarzała klasa Nette\Http\UserStorage została usunięta

Całą historię przejścia na nagłówki Sec-Fetch-* opowiada artykuł Ćwierć wieku CSRF.

Aktualizacja do wersji 3.2

  • dane uwierzytelniające z HTTP Basic Authentication nie są już częścią obiektu Url, więc $url->getUser() i $url->getPassword() zwracają pusty ciąg. Odczytasz je nową metodą $request->getBasicCredentials().

Powody tej zmiany wyjaśnia artykuł Nette Http 3.2: zmiana dostępu do danych uwierzytelniających.

Aktualizacja do wersji 3.1

  • cookies wysyłane są z flagą sameSite: Lax
  • cookieSecure ma teraz domyślnie wartość ‚auto‘
  • opcja session.cookieSecure jest przestarzała, używane jest zamiast niej http.cookieSecure
  • cookie nette-samesite zostało przemianowane na _nss
  • Nette\Http\Request::getFile() przyjmuje tablicę kluczy i zwraca FileUpload|null
  • Nette\Http\Session::getCookieParameters() jest przestarzałe
  • Nette\Http\FileUpload::getName() zostało przemianowane na getUntrustedName()
  • Nette\Http\Url: getBasePath(), getBaseUrl() i getRelativeUrl() są przestarzałe (metody te są częścią UrlScript)
  • Nette\Http\Response::$cookieHttpOnly jest przestarzałe
  • Nette\Http\FileUpload::getImageSize() zwraca parę [width, height]
  • przy autoStart: smart (domyślne) sesja nie jest już uruchamiana zaraz po starcie aplikacji tylko dlatego, że przeglądarka wysłała cookie sesyjne; uruchamia się przy pierwszym odczycie albo zapisie. Dodano wartości always i never.
  • gdy przeglądarka wyśle ID sesji, dla którego żadna sesja nie istnieje, Nette usuwa cookie zamiast tworzyć nową sesję
  • do dostępu do sekcji sesji preferuj metody set(), get() i remove(); w przeciwieństwie do dostępu przez właściwości poprawnie rozróżniają odczyt od zapisu i nie uruchamiają sesji niepotrzebnie
  • wartości domyślne cookiePath i cookieDomain można ustawić w konfiguracji

Zachowanie sesji opisuje szczegółowo artykuł Nette Http 3.1: znacznie sprytniejsze sesje.

Aktualizacja do wersji 3.0

  • obiekt Nette\Http\UrlScript (zwracany np. przez Nette\Http\Request::getUrl()) jest teraz niezmienny
  • w new Nette\Http\Url('abcd') abcd reprezentuje ścieżkę, a nie domenę; od 3.0 (new Nette\Http\Url('abcd'))->setScheme('http') poprawnie generuje http:abcd zamiast wcześniejszego http://abcd