Upgrade

Upgrade na verzi 3.4

Minimální požadovaná verze PHP je 8.3.

  • metoda Request::isSameSite() je zastaralá ve prospěch isFrom(), která původ požadavku zjišťuje z hlaviček Sec-Fetch-*. Automatická ochrana formulářů a signálů se tím zpřesní a mění se jedno chování: přímá navigace (záložka, ručně zadaná adresa, odkaz z e-mailu) se už za same-site nepovažuje. Pokud nějaký signál spoléhá na akční odkazy v e-mailech, označte jej #[Requires(sameOrigin: false)].
  • cookie _nss se nyní posílá pouze prohlížečům, které neposílají hlavičku Sec-Fetch-Site
  • setCookie() posílá atribut Max-Age a pro SameSite=None a partitioned cookie vynutí příznak Secure
  • enum SameSite nahrazuje konstanty IResponse::SameSiteLax apod., které jsou zastaralé
  • expirace se všude vykládá shodně: číslo je relativní počet sekund, text je interval nebo datum. Předávání absolutního UNIX timestampu je zastaralé a session cookie představuje hodnota null místo 0.
  • zastaralá metoda Request::getRemoteHost() vrací null
  • dávno zastaralá třída Nette\Http\UserStorage byla odstraněna

Celý příběh přechodu na hlavičky Sec-Fetch-* vypráví článek Čtvrt století s CSRF.

Upgrade na verzi 3.2

  • přihlašovací údaje z HTTP Basic Authentication už nejsou součástí objektu Url, takže $url->getUser() a $url->getPassword() vracejí prázdný řetězec. Přečtete je novou metodou $request->getBasicCredentials().

Důvody této změny vysvětluje článek Nette Http 3.2: změna přístupu ke credentials.

Upgrade na verzi 3.1

  • cookie jsou odesílány s příznakem sameSite: Lax
  • cookieSecure je nyní defaultně ‚auto‘
  • volba session.cookieSecure je zastaralá, místo ní se používá http.cookieSecure
  • cookie nette-samesite přejmenováno na _nss
  • Nette\Http\Request::getFile() přijímá pole klíčů a vrací FileUpload|null
  • Nette\Http\Session::getCookieParameters() je zastaralý
  • Nette\Http\FileUpload::getName() přejmenována na getUntrustedName()
  • Nette\Http\Url: getBasePath(), getBaseUrl() a getRelativeUrl() jsou zastaralé (tyto metody jsou součástí UrlScript)
  • Nette\Http\Response::$cookieHttpOnly je zastaralé
  • Nette\Http\FileUpload::getImageSize() vrací dvojici [width, height]
  • při autoStart: smart (výchozí hodnota) se session už nestartuje hned po startu aplikace jen proto, že prohlížeč poslal session cookie; nastartuje se až při prvním čtení nebo zápisu. Přibyly hodnoty always a never.
  • pokud prohlížeč pošle session ID, kterému neodpovídá žádná session, Nette cookie smaže místo toho, aby zakládalo novou session
  • pro přístup k sekcím session preferujte metody set(), get() a remove(); na rozdíl od přístupu k proměnným správně rozlišují čtení od zápisu a zbytečně nestartují session
  • výchozí hodnoty cookiePath a cookieDomain lze nastavit v konfiguraci

Chování session podrobně popisuje článek Nette Http 3.1: mnohem chytřejší sessions.

Upgrade na verzi 3.0

  • objekt Nette\Http\UrlScript (který vrací třeba Nette\Http\Request::getUrl()) je nyní immutable
  • v zápisu new Nette\Http\Url('abcd') představuje abcd cestu, nikoliv doménu; od verze 3.0 tedy (new Nette\Http\Url('abcd'))->setScheme('http') korektně vygeneruje http:abcd místo dřívějšího http://abcd
verze: 4.x 3.x