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
Version: 4.x