Aggiornamento
*************
Aggiornamento alla versione 3.4
===============================
La versione minima richiesta di PHP è la 8.3.
- il metodo `Request::isSameSite()` è deprecato a favore di `isFrom()`, che determina l'origine della richiesta dagli header `Sec-Fetch-*`. La protezione automatica dei form e dei segnali diventa più precisa e cambia un comportamento: la navigazione diretta (un segnalibro, un indirizzo digitato a mano, un link in una email) non è più considerata same-site. Se un segnale conta sui link di azione nelle email, contrassegnatelo con `#[Requires(sameOrigin: false)]`.
- il cookie `_nss` viene ora inviato solo ai browser che non inviano l'header `Sec-Fetch-Site`
- `setCookie()` invia l'attributo `Max-Age` e forza il flag `Secure` per `SameSite=None` e per i cookie partizionati
- l'enum `SameSite` sostituisce le costanti `IResponse::SameSiteLax` ecc., che sono deprecate
- la scadenza viene interpretata ovunque allo stesso modo: un numero è un numero relativo di secondi, una stringa è un intervallo o una data. Passare un timestamp UNIX assoluto è deprecato e il cookie di sessione si rappresenta con `null` invece che con `0`.
- il metodo deprecato `Request::getRemoteHost()` restituisce `null`
- la classe deprecata da tempo `Nette\Http\UserStorage` è stata rimossa
Tutta la storia del passaggio agli header `Sec-Fetch-*` è raccontata nell'articolo [Quarter Century of CSRF |https://blog.nette.org/en/quarter-century-of-csrf].
Aggiornamento alla versione 3.2
===============================
- le credenziali dell'HTTP Basic Authentication non fanno più parte dell'oggetto `Url`, quindi `$url->getUser()` e `$url->getPassword()` restituiscono una stringa vuota. Leggetele con il nuovo metodo `$request->getBasicCredentials()`.
I motivi di questo cambiamento sono spiegati nell'articolo [Nette Http 3.2: change access to credentials |https://blog.nette.org/en/nette-http-3-2-change-access-to-credentials].
Aggiornamento alla versione 3.1
===============================
- i cookie vengono inviati con il flag `sameSite: Lax`
- `cookieSecure` ha ora il valore predefinito 'auto'
- l'opzione `session.cookieSecure` è deprecata, al suo posto si usa `http.cookieSecure`
- il cookie `nette-samesite` è stato rinominato in `_nss`
- `Nette\Http\Request::getFile()` accetta un array di chiavi e restituisce `FileUpload|null`
- `Nette\Http\Session::getCookieParameters()` è deprecato
- `Nette\Http\FileUpload::getName()` è stato rinominato in `getUntrustedName()`
- `Nette\Http\Url`: `getBasePath()`, `getBaseUrl()` e `getRelativeUrl()` sono deprecati (questi metodi fanno parte di `UrlScript`)
- `Nette\Http\Response::$cookieHttpOnly` è deprecato
- `Nette\Http\FileUpload::getImageSize()` restituisce la coppia `[larghezza, altezza]`
- con `autoStart: smart` (il valore predefinito) la sessione non viene più avviata subito dopo l'avvio dell'applicazione solo perché il browser ha inviato un cookie di sessione; si avvia alla prima lettura o scrittura. Sono stati aggiunti i valori `always` e `never`.
- quando il browser invia un ID di sessione per il quale non esiste alcuna sessione, Nette cancella il cookie invece di creare una nuova sessione
- per accedere alle sezioni della sessione preferite i metodi `set()`, `get()` e `remove()`; a differenza dell'accesso tramite proprietà distinguono correttamente la lettura dalla scrittura e non avviano la sessione inutilmente
- i valori predefiniti di `cookiePath` e `cookieDomain` si possono impostare nella configurazione
Il comportamento delle sessioni è descritto in dettaglio nell'articolo [Nette Http 3.1: much smarter sessions |https://blog.nette.org/en/nette-http-3-1-much-smarter-sessions].
Aggiornamento alla versione 3.0
===============================
- l'oggetto `Nette\Http\UrlScript` (restituito per esempio da `Nette\Http\Request::getUrl()`) è ora immutabile
- in `new Nette\Http\Url('abcd')` la stringa `abcd` rappresenta il percorso, non il dominio; dalla 3.0 `(new Nette\Http\Url('abcd'))->setScheme('http')` genera correttamente `http:abcd` invece del precedente `http://abcd`
Aggiornamento
Aggiornamento alla versione 3.4
La versione minima richiesta di PHP è la 8.3.
- il metodo
Request::isSameSite() è deprecato a favore di isFrom(), che determina l'origine della
richiesta dagli header Sec-Fetch-*. La protezione automatica dei form e dei segnali diventa più precisa e cambia un
comportamento: la navigazione diretta (un segnalibro, un indirizzo digitato a mano, un link in una email) non è più considerata
same-site. Se un segnale conta sui link di azione nelle email, contrassegnatelo con
#[Requires(sameOrigin: false)].
- il cookie
_nss viene ora inviato solo ai browser che non inviano l'header Sec-Fetch-Site
setCookie() invia l'attributo Max-Age e forza il flag Secure per
SameSite=None e per i cookie partizionati
- l'enum
SameSite sostituisce le costanti IResponse::SameSiteLax ecc., che sono deprecate
- la scadenza viene interpretata ovunque allo stesso modo: un numero è un numero relativo di secondi, una stringa è un
intervallo o una data. Passare un timestamp UNIX assoluto è deprecato e il cookie di sessione si rappresenta con
null invece che con 0.
- il metodo deprecato
Request::getRemoteHost() restituisce null
- la classe deprecata da tempo
Nette\Http\UserStorage è stata rimossa
Tutta la storia del passaggio agli header Sec-Fetch-* è raccontata nell'articolo Quarter Century of CSRF.
Aggiornamento alla versione 3.2
- le credenziali dell'HTTP Basic Authentication non fanno più parte dell'oggetto
Url, quindi
$url->getUser() e $url->getPassword() restituiscono una stringa vuota. Leggetele con il nuovo
metodo $request->getBasicCredentials().
I motivi di questo cambiamento sono spiegati nell'articolo Nette Http 3.2: change access to credentials.
Aggiornamento alla versione 3.1
- i cookie vengono inviati con il flag
sameSite: Lax
cookieSecure ha ora il valore predefinito ‘auto’
- l'opzione
session.cookieSecure è deprecata, al suo posto si usa http.cookieSecure
- il cookie
nette-samesite è stato rinominato in _nss
Nette\Http\Request::getFile() accetta un array di chiavi e restituisce FileUpload|null
Nette\Http\Session::getCookieParameters() è deprecato
Nette\Http\FileUpload::getName() è stato rinominato in getUntrustedName()
Nette\Http\Url: getBasePath(), getBaseUrl() e getRelativeUrl() sono
deprecati (questi metodi fanno parte di UrlScript)
Nette\Http\Response::$cookieHttpOnly è deprecato
Nette\Http\FileUpload::getImageSize() restituisce la coppia [larghezza, altezza]
- con
autoStart: smart (il valore predefinito) la sessione non viene più avviata subito dopo l'avvio
dell'applicazione solo perché il browser ha inviato un cookie di sessione; si avvia alla prima lettura o scrittura. Sono stati
aggiunti i valori always e never.
- quando il browser invia un ID di sessione per il quale non esiste alcuna sessione, Nette cancella il cookie invece di creare
una nuova sessione
- per accedere alle sezioni della sessione preferite i metodi
set(), get() e remove(); a
differenza dell'accesso tramite proprietà distinguono correttamente la lettura dalla scrittura e non avviano la sessione
inutilmente
- i valori predefiniti di
cookiePath e cookieDomain si possono impostare nella configurazione
Il comportamento delle sessioni è descritto in dettaglio nell'articolo Nette Http 3.1: much smarter sessions.
Aggiornamento alla versione 3.0
- l'oggetto
Nette\Http\UrlScript (restituito per esempio da Nette\Http\Request::getUrl()) è ora
immutabile
- in
new Nette\Http\Url('abcd') la stringa abcd rappresenta il percorso, non il dominio; dalla 3.0
(new Nette\Http\Url('abcd'))->setScheme('http') genera correttamente http:abcd invece del
precedente http://abcd