Mise à niveau
Mise à niveau vers la version 3.4
La version minimale de PHP requise est 8.3.
- la méthode
Request::isSameSite()est obsolète au profit d'isFrom(), qui détermine l'origine de la requête à partir des en-têtesSec-Fetch-*. La protection automatique des formulaires et des signaux devient plus précise, et un comportement change : la navigation directe (un favori, une adresse tapée à la main, un lien dans un e-mail) n'est plus considérée comme same-site. Si un signal repose sur des liens d'action dans des e-mails, marquez-le par#[Requires(sameOrigin: false)]. - le cookie
_nssn'est désormais envoyé qu'aux navigateurs qui n'envoient pas l'en-têteSec-Fetch-Site setCookie()envoie l'attributMax-Ageet impose le drapeauSecurepourSameSite=Noneet pour les cookies partitionnés- l'enum
SameSiteremplace les constantesIResponse::SameSiteLaxetc., qui sont obsolètes - l'expiration s'interprète partout de la même façon : un nombre est un nombre relatif de secondes, une chaîne est un
intervalle ou une date. Passer un timestamp UNIX absolu est obsolète, et un cookie de session est représenté par
nullau lieu de0. - la méthode obsolète
Request::getRemoteHost()renvoienull - la classe
Nette\Http\UserStorage, obsolète depuis longtemps, a été supprimée
Toute l'histoire du passage aux en-têtes Sec-Fetch-* est racontée dans l'article Quarter Century of CSRF.
Mise à niveau vers la version 3.2
- les identifiants de l'authentification HTTP Basic ne font plus partie de l'objet
Url, si bien que$url->getUser()et$url->getPassword()renvoient une chaîne vide. Lisez-les à l'aide de la nouvelle méthode$request->getBasicCredentials().
Les raisons de ce changement sont expliquées dans l'article Nette Http 3.2: change access to credentials.
Mise à niveau vers la version 3.1
- les cookies sont envoyés avec le drapeau
sameSite: Lax cookieSecurevaut désormais ‘auto’ par défaut- l'option
session.cookieSecureest obsolète ; c'esthttp.cookieSecurequi est utilisée à la place - le cookie
nette-samesitea été renommé en_nss Nette\Http\Request::getFile()accepte un tableau de clés et renvoieFileUpload|nullNette\Http\Session::getCookieParameters()est obsolèteNette\Http\FileUpload::getName()a été renommée engetUntrustedName()Nette\Http\Url:getBasePath(),getBaseUrl()etgetRelativeUrl()sont obsolètes (ces méthodes font partie d'UrlScript)Nette\Http\Response::$cookieHttpOnlyest obsolèteNette\Http\FileUpload::getImageSize()renvoie la paire[largeur, hauteur]- avec
autoStart: smart(la valeur par défaut), la session n'est plus démarrée juste après le lancement de l'application au seul motif que le navigateur a envoyé un cookie de session ; elle démarre à la première lecture ou écriture. Les valeursalwaysetneveront été ajoutées. - lorsque le navigateur envoie un ID de session pour lequel aucune session n'existe, Nette supprime le cookie au lieu de créer une nouvelle session
- pour accéder aux sections de session, préférez les méthodes
set(),get()etremove(); contrairement à l'accès par propriété, elles distinguent correctement la lecture de l'écriture et ne démarrent pas la session inutilement - les valeurs par défaut de
cookiePathetcookieDomainpeuvent être définies dans la configuration
Le comportement des sessions est décrit en détail dans l'article Nette Http 3.1: much smarter sessions.
Mise à niveau vers la version 3.0
- l'objet
Nette\Http\UrlScript(renvoyé par exemple parNette\Http\Request::getUrl()) est désormais immuable - dans
new Nette\Http\Url('abcd'),abcdreprésente le chemin, pas le domaine ; depuis la 3.0,(new Nette\Http\Url('abcd'))->setScheme('http')génère correctementhttp:abcdau lieu du précédenthttp://abcd