Upgrade
Upgrade na verzi 3.4
Minimální požadovaná verze PHP je 8.3.
- metoda
Request::isSameSite()je zastaralá ve prospěchisFrom(), která původ požadavku zjišťuje z hlavičekSec-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
_nssse nyní posílá pouze prohlížečům, které neposílají hlavičkuSec-Fetch-Site setCookie()posílá atributMax-Agea proSameSite=Nonea partitioned cookie vynutí příznakSecure- enum
SameSitenahrazuje konstantyIResponse::SameSiteLaxapod., 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
nullmísto0. - zastaralá metoda
Request::getRemoteHost()vracínull - dávno zastaralá třída
Nette\Http\UserStoragebyla 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 cookieSecureje nyní defaultně ‚auto‘- volba
session.cookieSecureje zastaralá, místo ní se používáhttp.cookieSecure - cookie
nette-samesitepřejmenováno na_nss Nette\Http\Request::getFile()přijímá pole klíčů a vracíFileUpload|nullNette\Http\Session::getCookieParameters()je zastaralýNette\Http\FileUpload::getName()přejmenována nagetUntrustedName()Nette\Http\Url:getBasePath(),getBaseUrl()agetRelativeUrl()jsou zastaralé (tyto metody jsou součástíUrlScript)Nette\Http\Response::$cookieHttpOnlyje 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 hodnotyalwaysanever. - 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()aremove(); 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
cookiePathacookieDomainlze 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řebaNette\Http\Request::getUrl()) je nyní immutable - v zápisu
new Nette\Http\Url('abcd')představujeabcdcestu, nikoliv doménu; od verze 3.0 tedy(new Nette\Http\Url('abcd'))->setScheme('http')korektně vygenerujehttp:abcdmísto dřívějšíhohttp://abcd