enhancement
major
minor
defect
critical
major
minor
major
#30127
An application at the server root keeps its session: the session cookie is sent to all its paths, and the React page announces its icon
An application deployed at the root context of its server (context path empty, e.g. in a container) cannot be used through the React UI: the sign-in at /view/ succeeds, but every request to /react-api answers 401. Split off #30083 (2026-11-03).
Problem
Observed: after a sign-in at http://host/view/ the browser sends JSESSIONID only to /view, so /react-api answers 401. The page also requests /favicon.ico, which the root context logs as a 404.
Expected: the session cookie reaches every path of the application, and the page names its icon, so the browser does not ask the server root for one.
Reproduce:
- Deploy an application with context path /` (e.g. on the runtime image of #30130, or as Tomcat `ROOT).
- Open /view/ and sign in.
- The cookie is written Path= (empty); the browser scopes it to /view.
Cause
SessionService.setSecureSessionCookie writes Path= plus the context path. At the root context that path is empty, and a cookie without a path is scoped by the browser to the directory of the request. The method is used both when a session is created and when its id changes. The page of the React UI (ViewServlet) writes no icon link, so the browser asks for /favicon.ico.
Proposal
- An empty context path writes Path=/.*decided*
- The page of the React UI writes the application icon (FaviconTag) like the classic UI. *decided*
Done when
- TestSessionService.testSessionCookieAtServerRoot passes; on master the cookie is written with an empty Path.
- An application at the server root signs in at /view/ without a 401 from /react-api.