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
versione: 4.x