|
与会话相关的 Cookie 是 Tomcat 内部自己生成的,当在 Servlet 中使用 Request.getSession() 获取会话对象时,就会触发执行,核心代码:
- protected Session doGetSession(boolean create) {
- ...
- // 创建 Session 实例
- if (connector.getEmptySessionPath() && isRequestedSessionIdFromCookie()) {
- // 如果会话 ID 来自 cookie,请重用该 ID,如果来自 URL,请不要
- // 重用该会话ID,以防止可能的网络钓鱼攻击
- session = manager.createSession(getRequestedSessionId());
- } else {
- session = manager.createSession(null);
- }
- // 基于该 Session 创建一个新的会话 cookie
- if ((session != null) && (getContext() != null)
- && getContext().getCookies()) {
- String scName = context.getSessionCookieName();
- if (scName == null) {
- // 默认 JSESSIONID
- scName = Globals.SESSION_COOKIE_NAME;
- }
- // 新建 Cookie
- Cookie cookie = new Cookie(scName, session.getIdInternal());
- // 设置 path domain secure
- configureSessionCookie(cookie);
- // 添加到响应头域
- response.addSessionCookieInternal(cookie, context.getUseHttpOnly());
- }
- if (session != null) {
- session.access();
- return (session);
- } else {
- return (null);
- }
- }
添加到响应头域,就是根据 Cookie 对象,生成如开始描述的格式那样。
3. Session (编辑:衢州站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|