Обновление
Обновление до версии 3.4
Минимально требуемая версия PHP – 8.3.
- метод
Request::isSameSite()объявлен устаревшим в пользуisFrom(), который определяет источник запроса по заголовкамSec-Fetch-*. Автоматическая защита форм и сигналов становится точнее, и одно поведение меняется: прямой переход (закладка, вручную введённый адрес, ссылка в письме) больше не считается same-site. Если сигнал полагается на ссылки-действия в письмах, пометьте его атрибутом#[Requires(sameOrigin: false)]. - cookie
_nssтеперь отправляется только браузерам, которые не отправляют заголовокSec-Fetch-Site setCookie()отправляет атрибутMax-Ageи принудительно ставит флагSecureдляSameSite=Noneи для секционированных cookie- перечисление
SameSiteзаменяет константыIResponse::SameSiteLaxи им подобные, которые объявлены устаревшими - срок действия везде истолковывается одинаково: число – это
относительное количество секунд, строка – интервал или дата. Передача
абсолютной временной метки UNIX объявлена устаревшей, а сессионную cookie
обозначает
nullвместо0. - устаревший метод
Request::getRemoteHost()возвращаетnull - давно устаревший класс
Nette\Http\UserStorageбыл удалён
Вся история перехода на заголовки Sec-Fetch-* рассказана в статье Четверть века CSRF.
Обновление до версии 3.2
- учётные данные из HTTP Basic Authentication больше не входят в объект
Url, поэтому$url->getUser()и$url->getPassword()возвращают пустую строку. Считывайте их новым методом$request->getBasicCredentials().
Причины этого изменения объясняются в статье Nette Http 3.2: изменение доступа к учётным данным.
Обновление до версии 3.1
- cookie отправляются с флагом
sameSite: Lax cookieSecureтеперь по умолчанию равен ‚auto‘- параметр
session.cookieSecureобъявлен устаревшим, вместо него используетсяhttp.cookieSecure - cookie
nette-samesiteпереименована в_nss Nette\Http\Request::getFile()принимает массив ключей и возвращаетFileUpload|nullNette\Http\Session::getCookieParameters()объявлен устаревшимNette\Http\FileUpload::getName()переименован вgetUntrustedName()Nette\Http\Url:getBasePath(),getBaseUrl()иgetRelativeUrl()объявлены устаревшими (эти методы входят вUrlScript)Nette\Http\Response::$cookieHttpOnlyобъявлен устаревшимNette\Http\FileUpload::getImageSize()возвращает пару[width, height]- при
autoStart: smart(по умолчанию) сессия больше не запускается сразу после старта приложения только потому, что браузер отправил сессионную cookie; она запускается при первом чтении или записи. Добавлены значенияalwaysиnever. - когда браузер отправляет ID сессии, для которого сессии не существует, Nette удаляет cookie вместо создания новой сессии
- для доступа к секциям сессии предпочитайте методы
set(),get()иremove(); в отличие от обращения через свойства они правильно различают чтение и запись и не запускают сессию без надобности - значения по умолчанию для
cookiePathиcookieDomainможно задать в конфигурации
Поведение сессий подробно описано в статье Nette Http 3.1: намного умнее сессии.
Обновление до версии 3.0
- объект
Nette\Http\UrlScript(который возвращает, например,Nette\Http\Request::getUrl()) теперь неизменяем - в
new Nette\Http\Url('abcd')строкаabcdпредставляет путь, а не домен; начиная с 3.0(new Nette\Http\Url('abcd'))->setScheme('http')правильно порождаетhttp:abcdвместо прежнегоhttp://abcd