Upgrade
Upgrade auf Version 3.4
Die mindestens erforderliche PHP-Version ist 8.3.
- die Methode
Request::isSameSite()ist zugunsten vonisFrom()veraltet, das die Herkunft des Requests anhand derSec-Fetch-*-Header bestimmt. Der automatische Schutz von Formularen und Signalen wird dadurch genauer, und ein Verhalten ändert sich: Direkte Navigation (ein Lesezeichen, eine von Hand eingetippte Adresse, ein Link in einer E-Mail) gilt nicht mehr als Same-Site. Wenn ein Signal auf Aktionslinks in E-Mails angewiesen ist, kennzeichnen Sie es mit#[Requires(sameOrigin: false)]. - das Cookie
_nsswird nun nur noch an Browser gesendet, die den HeaderSec-Fetch-Sitenicht senden setCookie()sendet das AttributMax-Ageund erzwingt das FlagSecurefürSameSite=Noneund für partitionierte Cookies- das Enum
SameSiteersetzt die KonstantenIResponse::SameSiteLaxusw., die veraltet sind - die Ablaufzeit wird überall gleich interpretiert: Eine Zahl ist eine relative Anzahl von Sekunden, ein String ein Intervall
oder ein Datum. Die Übergabe eines absoluten UNIX-Timestamps ist veraltet, und ein Session-Cookie wird durch
nullstatt0dargestellt. - die veraltete Methode
Request::getRemoteHost()gibtnullzurück - die seit Langem veraltete Klasse
Nette\Http\UserStoragewurde entfernt
Die ganze Geschichte der Umstellung auf die Sec-Fetch-*-Header erzählt der Artikel Quarter Century of CSRF.
Upgrade auf Version 3.2
- die Zugangsdaten aus der HTTP-Basic-Authentifizierung sind nicht mehr Teil des
Url-Objekts,$url->getUser()und$url->getPassword()geben also einen leeren String zurück. Lesen Sie sie mit der neuen Methode$request->getBasicCredentials().
Die Gründe für diese Änderung erklärt der Artikel Nette Http 3.2: change access to credentials.
Upgrade auf Version 3.1
- Cookies werden mit dem Flag
sameSite: Laxgesendet cookieSecurehat nun den Standardwert ‘auto’- die Option
session.cookieSecureist veraltet; stattdessen wirdhttp.cookieSecureverwendet - das Cookie
nette-samesitewurde in_nssumbenannt Nette\Http\Request::getFile()nimmt ein Array von Schlüsseln entgegen und gibtFileUpload|nullzurückNette\Http\Session::getCookieParameters()ist veraltetNette\Http\FileUpload::getName()wurde ingetUntrustedName()umbenanntNette\Http\Url:getBasePath(),getBaseUrl()undgetRelativeUrl()sind veraltet (diese Methoden gehören zuUrlScript)Nette\Http\Response::$cookieHttpOnlyist veraltetNette\Http\FileUpload::getImageSize()gibt das Paar[Breite, Höhe]zurück- mit
autoStart: smart(dem Standard) startet die Session nicht mehr gleich nach dem Start der Anwendung, nur weil der Browser ein Session-Cookie gesendet hat; sie startet beim ersten Lesen oder Schreiben. Die Wertealwaysundneverkamen hinzu. - wenn der Browser eine Session-ID sendet, zu der keine Session existiert, löscht Nette das Cookie, statt eine neue Session anzulegen
- für den Zugriff auf Session-Abschnitte sind die Methoden
set(),get()undremove()vorzuziehen; anders als der Zugriff über Properties unterscheiden sie korrekt zwischen Lesen und Schreiben und starten die Session nicht unnötig - die Standardwerte von
cookiePathundcookieDomainlassen sich in der Konfiguration setzen
Das Verhalten der Sessions beschreibt der Artikel Nette Http 3.1: much smarter sessions ausführlich.
Upgrade auf Version 3.0
- das Objekt
Nette\Http\UrlScript(das z. B.Nette\Http\Request::getUrl()zurückgibt) ist nun unveränderlich - in
new Nette\Http\Url('abcd')stehtabcdfür den Pfad, nicht für die Domain; seit 3.0 erzeugt(new Nette\Http\Url('abcd'))->setScheme('http')korrekthttp:abcdstatt des früherenhttp://abcd