Upgrade
*******
Upgrade auf Version 3.4
=======================
Die mindestens erforderliche PHP-Version ist 8.3.
- die Methode `Request::isSameSite()` ist zugunsten von `isFrom()` veraltet, das die Herkunft des Requests anhand der `Sec-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 `_nss` wird nun nur noch an Browser gesendet, die den Header `Sec-Fetch-Site` nicht senden
- `setCookie()` sendet das Attribut `Max-Age` und erzwingt das Flag `Secure` für `SameSite=None` und für partitionierte Cookies
- das Enum `SameSite` ersetzt die Konstanten `IResponse::SameSiteLax` usw., 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 `null` statt `0` dargestellt.
- die veraltete Methode `Request::getRemoteHost()` gibt `null` zurück
- die seit Langem veraltete Klasse `Nette\Http\UserStorage` wurde entfernt
Die ganze Geschichte der Umstellung auf die `Sec-Fetch-*`-Header erzählt der Artikel [Quarter Century of CSRF |https://blog.nette.org/en/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 |https://blog.nette.org/en/nette-http-3-2-change-access-to-credentials].
Upgrade auf Version 3.1
=======================
- Cookies werden mit dem Flag `sameSite: Lax` gesendet
- `cookieSecure` hat nun den Standardwert 'auto'
- die Option `session.cookieSecure` ist veraltet; stattdessen wird `http.cookieSecure` verwendet
- das Cookie `nette-samesite` wurde in `_nss` umbenannt
- `Nette\Http\Request::getFile()` nimmt ein Array von Schlüsseln entgegen und gibt `FileUpload|null` zurück
- `Nette\Http\Session::getCookieParameters()` ist veraltet
- `Nette\Http\FileUpload::getName()` wurde in `getUntrustedName()` umbenannt
- `Nette\Http\Url`: `getBasePath()`, `getBaseUrl()` und `getRelativeUrl()` sind veraltet (diese Methoden gehören zu `UrlScript`)
- `Nette\Http\Response::$cookieHttpOnly` ist veraltet
- `Nette\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 Werte `always` und `never` kamen 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()` und `remove()` vorzuziehen; anders als der Zugriff über Properties unterscheiden sie korrekt zwischen Lesen und Schreiben und starten die Session nicht unnötig
- die Standardwerte von `cookiePath` und `cookieDomain` lassen sich in der Konfiguration setzen
Das Verhalten der Sessions beschreibt der Artikel [Nette Http 3.1: much smarter sessions |https://blog.nette.org/en/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')` steht `abcd` für den Pfad, nicht für die Domain; seit 3.0 erzeugt `(new Nette\Http\Url('abcd'))->setScheme('http')` korrekt `http:abcd` statt des früheren `http://abcd`
Upgrade
Upgrade auf Version 3.4
Die mindestens erforderliche PHP-Version ist 8.3.
- die Methode
Request::isSameSite() ist zugunsten von isFrom() veraltet, das die Herkunft des Requests
anhand der Sec-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
_nss wird nun nur noch an Browser gesendet, die den Header Sec-Fetch-Site
nicht senden
setCookie() sendet das Attribut Max-Age und erzwingt das Flag Secure für
SameSite=None und für partitionierte Cookies
- das Enum
SameSite ersetzt die Konstanten IResponse::SameSiteLax usw., 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
null
statt 0 dargestellt.
- die veraltete Methode
Request::getRemoteHost() gibt null zurück
- die seit Langem veraltete Klasse
Nette\Http\UserStorage wurde 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: Lax gesendet
cookieSecure hat nun den Standardwert ‘auto’
- die Option
session.cookieSecure ist veraltet; stattdessen wird http.cookieSecure verwendet
- das Cookie
nette-samesite wurde in _nss umbenannt
Nette\Http\Request::getFile() nimmt ein Array von Schlüsseln entgegen und gibt
FileUpload|null zurück
Nette\Http\Session::getCookieParameters() ist veraltet
Nette\Http\FileUpload::getName() wurde in getUntrustedName() umbenannt
Nette\Http\Url: getBasePath(), getBaseUrl() und getRelativeUrl() sind
veraltet (diese Methoden gehören zu UrlScript)
Nette\Http\Response::$cookieHttpOnly ist veraltet
Nette\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 Werte always und
never kamen 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() und remove()
vorzuziehen; anders als der Zugriff über Properties unterscheiden sie korrekt zwischen Lesen und Schreiben und starten die
Session nicht unnötig
- die Standardwerte von
cookiePath und cookieDomain lassen 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') steht abcd für den Pfad, nicht für die Domain; seit 3.0 erzeugt
(new Nette\Http\Url('abcd'))->setScheme('http') korrekt http:abcd statt des
früheren http://abcd