加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

cookie与sessionID之间的关系实验

发布时间:2021-05-21 07:22:58 所属栏目:大数据 来源: https://www.jb51.cc
导读:? 上一篇介绍了cookie,这里来看看cookie与sessionID之间有什么关系。 ? 一、编写测试用例代码 新建一个servlet如下: public class SessionServlet extends HttpServlet { private static final long serialVersionUID = 1L ; /** * @see HttpServlet#HttpS
Connectionclose@H_404_145@ Content-Languagezh-CNContent-Length318Content-Typetext/html;charset=ISO-8859-1DateTue,26 Feb 2019 03:11:49 GMTSet-CookieJSESSIONID=1D8268B571F492DDE6DA2A4D5B6BC2E3;path=/;HttpOnly@H_404_145@

【请求头】

?

Accepttext/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8@H_404_145@ Accept-Encodinggzip,deflateAccept-Languagezh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Connectionkeep-aliveHostlocalhost:8899Upgrade-Insecure-Requests1User-AgentMozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/56.0@H_404_145@

【控制台输出】:

? ? ? ? ? ? ? ? sessionId :?1D8268B571F492DDE6DA2A4D5B6BC2E3

? ? ? ? ? ? ? ? jsessionId:?

第 2 次打开连接(刷新页面)

【响应头】

Content-Length89@H_404_145@ Content-Typetext/html;charset=UTF-8DateTue,26 Feb 2019 03:15:02 GMT@H_404_145@

【请求头】

Accepttext/html,*/*;q=0.8@H_404_145@ Accept-Encodinggzip,deflateAccept-Languagezh-CN,en;q=0.2Cache-Controlmax-age=0Connectionkeep-aliveCookieJSESSIONID=1D8268B571F492DDE6DA2A4D5B6BC2E3Hostlocalhost:8899Upgrade-Insecure-Requests1User-AgentMozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/56.0@H_404_145@

【控制台输出】

? ? ? ? ? ? sessionId: 1D8268B571F492DDE6DA2A4D5B6BC2E3

? ? ? ? ? ?jsessionId: 1D8268B571F492DDE6DA2A4D5B6BC2E3

第三次打开连接(再次刷新页面)

? ?于第二次一致

?

结论:

首次访问时:服务器创建 session,并告诉客户端设置cookie来存储sessionId,即如下响应头:

Set-CookieJSESSIONID=1D8268B571F492DDE6DA2A4D5B6BC2E3;path=/;HttpOnly@H_404_145@

再次访问时:客户端 携带此 存有此 sessionId (cookie中为jsessionId)的cookie给服务器。【告诉服务器,我就是刚才那个人】

?

2. 关闭浏览器看看 session 会如何变化

第一次访问,? 响应头? ?

Set-CookieJSESSIONID=927B67009E1E4439F8857074B867AF3A;path=/;HttpOnly@H_404_145@

sessionId :?927B67009E1E4439F8857074B867AF3A

jsessionId :?

?

再次刷新:

sessionId: 927B67009E1E4439F8857074B867AF3A

jsessionId: 927B67009E1E4439F8857074B867AF3A

?

结论: 关闭浏览器之后,重新打开页面,会开启新的session

?

?3.禁用浏览器cookie,访问四次如下:

禁用cookie之后,每次sessionID都不一样

?

所以,当客户端禁用cookie之后,便不好跟踪用户了。这时可使用response.encodeURL???

?servlet中response.sendRedirect(response.encodeRedirectURL("2.jsp"));

jsp中:<a href="<%=response.encodeURL("http://localhost:6060/xxx/xxxServlet")%>">111</a>

?

?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

?

上一篇介绍了cookie,这里来看看cookie与sessionID之间有什么关系。

?

一、编写测试用例代码

新建一个servlet如下:

public class SessionServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SessionServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

     HttpServlet#doGet(HttpServletRequest request,HttpServletResponse response)
     protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
     System.out.println("----->进入doget方法......"); HttpSession session
=request.getSession(); System.out.println("sessionId:---->"+session.getId()); 获得请求中的cookie Cookie[] cs=request.getCookies(); if(cs!=null){有cookie,并且又指定的cookie System.out.println("cookie长度:"+cs.length); for(Cookie co:cs){ System.out.println(co.getName()+";"+co.getValue()); } }else{ System.out.println("没有cookie"); } Cookie visitCookie=new Cookie("visitCookie","yes"); visitCookie.setMaxAge(60*60);设置cookie失效时间 response.addCookie(visitCookie); PrintWriter out=response.getWriter(); out.print("<html><body><h1>sessionId:"+session.getId()+"</h1></body></html>"); } HttpServlet#doPost(HttpServletRequest request,1)">void doPost(HttpServletRequest request,IOException { this.doGet(request,response); } }

二、开始测试

1.使用 火狐浏览器打开连接

第 1 次打开链接,请求头响应头如下:

【响应头】:

    推荐文章
      热点阅读