Actualización
Actualización a la versión 3.4
La versión mínima de PHP requerida es la 8.3.
- el método
Request::isSameSite()está obsoleto en favor deisFrom(), que determina el origen de la petición a partir de las cabecerasSec-Fetch-*. La protección automática de los formularios y las señales se vuelve más precisa y cambia un comportamiento: la navegación directa (un marcador, una dirección escrita a mano, un enlace en un correo) ya no se considera same-site. Si una señal depende de enlaces de acción en correos, márquela con#[Requires(sameOrigin: false)]. - la cookie
_nssse envía ahora solo a los navegadores que no envían la cabeceraSec-Fetch-Site setCookie()envía el atributoMax-Agey fuerza la banderaSecureen las cookies conSameSite=Noney en las particionadas- el enum
SameSitesustituye a las constantesIResponse::SameSiteLaxetc., que quedan obsoletas - la expiración se interpreta igual en todas partes: un número es un número relativo de segundos, una cadena es un intervalo
o una fecha. Pasar un timestamp UNIX absoluto está obsoleto y una cookie de sesión se representa con
nullen lugar de0. - el método obsoleto
Request::getRemoteHost()devuelvenull - se ha eliminado la clase, obsoleta desde hace tiempo,
Nette\Http\UserStorage
Toda la historia del cambio a las cabeceras Sec-Fetch-* se cuenta en el artículo Quarter Century of CSRF.
Actualización a la versión 3.2
- las credenciales de la autenticación HTTP Basic ya no forman parte del objeto
Url, así que$url->getUser()y$url->getPassword()devuelven una cadena vacía. Léalas con el nuevo método$request->getBasicCredentials().
Los motivos de este cambio se explican en el artículo Nette Http 3.2: change access to credentials.
Actualización a la versión 3.1
- las cookies se envían con la bandera
sameSite: Lax cookieSecuretiene ahora el valor predeterminado ‘auto’- la opción
session.cookieSecureestá obsoleta; en su lugar se usahttp.cookieSecure - la cookie
nette-samesitese ha renombrado a_nss Nette\Http\Request::getFile()acepta un array de claves y devuelveFileUpload|nullNette\Http\Session::getCookieParameters()está obsoletoNette\Http\FileUpload::getName()se ha renombrado agetUntrustedName()Nette\Http\Url:getBasePath(),getBaseUrl()ygetRelativeUrl()están obsoletos (estos métodos forman parte deUrlScript)Nette\Http\Response::$cookieHttpOnlyestá obsoletoNette\Http\FileUpload::getImageSize()devuelve el par[width, height]- con
autoStart: smart(el valor predeterminado), la sesión ya no se inicia justo después de arrancar la aplicación solo porque el navegador haya enviado una cookie de sesión; se inicia en la primera lectura o escritura. Se han añadido los valoresalwaysynever. - cuando el navegador envía un ID de sesión para el que no existe ninguna sesión, Nette borra la cookie en lugar de crear una sesión nueva
- para acceder a las secciones de la sesión prefiera los métodos
set(),get()yremove(); a diferencia del acceso por propiedad, distinguen correctamente la lectura de la escritura y no inician la sesión innecesariamente - los valores predeterminados de
cookiePathycookieDomainse pueden establecer en la configuración
El comportamiento de las sesiones se describe en detalle en el artículo Nette Http 3.1: much smarter sessions.
Actualización a la versión 3.0
- el objeto
Nette\Http\UrlScript(que devuelve, por ejemplo,Nette\Http\Request::getUrl()) es ahora inmutable - en
new Nette\Http\Url('abcd'),abcdrepresenta la ruta, no el dominio; desde la 3.0,(new Nette\Http\Url('abcd'))->setScheme('http')genera correctamentehttp:abcden lugar del anteriorhttp://abcd