会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记

这篇具有很好参考价值的文章主要介绍了会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、核心知识点(重点):

1.1 Cookie

1. Cookie:是一种客户端会话技术,数据会被保存在客户端,Cookie会携带数据访问服务器,用以完成一次会话内多次请求间的数据共享

2. 过程:浏览器(客户端)先向服务端发送请求,服务端会发送一个Cookie给客户端,在此后同一次会话中,每次客户端都会将Cookie发送给服务端,数据层层叠加。

3. Cookie存活时间:默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁。调用setMaxAge(int seconds)可以设置Cookie的存活时间。

4. Cookie的发送和获取:

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring 会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

1.2 Session

1. Session:服务端的会话跟踪技术,将数据保存在服务端。JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能。Session的实现是基于Cookie的。

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

2. Session的钝化和活化:(钝化:)在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中。(活化:)再次启动服务器后,从文件中加载数据到Session中。

3. Session的销毁,在web.xml中可以用<session-timeout>标签进行更改销毁时间。:

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

1.3 HTTP

1. HTTP(Hyper Text Transfer Protocol 超文本传输协议):规定了浏览器和服务器之间数据传输的规则(服务器和客户端之间进行数据交互的格式)。

2. HTTP协议特点:1. 基于TCP协议:面向连接、安全。2. 基于请求-响应模型的:一次请求对应一次响应。3. HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。缺点:多次请求间不能共享数据。(Java中用会话技术,如Cookie、Session来解决这个问题)优点:速度快。

3. GET和POST的区别:1. GET请求的请求参数在请求行中,没有请求体。POST请求的请求参数在请求体中。2. GET请求的请求参数大小有限制,POST没有限制。

4. 状态码:302  Found  找到。304  Not Modified  没有修改。400  Bad Request  错误的请求。403  Forbidden  拒绝。404  Not Found  请求资源不存在。428  Precondition Required 有条件请求。 429  Too Many Requests  太多请求。431   Request Header Fields Too Large  请求头太大。405   Method Not Allowed   请求方式有误。500   Internal Server Error   服务器发生不可预期的错误。503   Service Unavailable  服务器尚未准备好处理请求。511   Network Authentication Required  需要进行身份验证。

二、会话跟踪技术(Cookie+Session)

1.1 预备知识

1. 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。

2. 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一个浏览器,以便在同一次会话的多次请求间共享数据。

3. 为什么需要会话跟踪技术?

因为HTTP协议是无状态的(如果是有状态的则后面的请求要携带前面请求所有的数据,会导致请求的体量很大,访问的速度会很慢),每次浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享。

4. 实现方式:客户端会话跟踪技术:Cookie;服务端会话跟踪技术:Session。

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

1.2 Cookie基本使用

Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问。

过程:浏览器(客户端)先向服务端发送请求,服务端会发送一个Cookie给客户端,在此后同一次会话中,每次客户端都会将Cookie发送给服务端,数据层层叠加。

1.2.1 发送Cookie

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

在java-web-cookie路径下创建AServlet类,写入下面的代码:

@WebServlet("/aServlet")
public class AServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//发送Cookie
        Cookie cookie = new Cookie("username", "zhangsan");//1.创建Cookie对象
        response.addCookie(cookie);//2.发送Cookie。response
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

F12-设置-Cookie和网站权限-管理和删除cookie和站点数据-查看所有Cookkie和站点数据

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

1.2.2 获取Cookie

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

@WebServlet("/bServlet")
public class BServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取Cookie
        Cookie[] cookies = request.getCookies();//获取Cookie数组
        for(Cookie cookie:cookies) { //遍历数组
            String name = cookie.getName();
            if("username".equals(name)){
                String value = cookie.getValue(); //使用Cookie对象获取数据
                System.out.println(name + ":" + value);
                break;  } } }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

1.3 Cookie原理和使用细节

Cookie的实现是基于HTTP协议的:响应头set-cookie(是服务端发送给浏览器,里面会装有Cookie携带的数据)请求头cookie(是浏览器发送给服务端,里面同样装有数据)

1. Cookie存活时间:默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁。

调用setMaxAge(int seconds)可以设置Cookie的存活时间。正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储,到时间自动删除。负数:默认值,当浏览器关闭,则Cookie被销毁。零:删除。

2. Cookie存储中文:Cookie不能直接存储中文。需要将中文转化成其它编码格式存储,等到要显示时再解析为非中文的数据。

因此可以在Cookie的发送端调用URLEncoder将字符串转化为UTF-8的格式:

String value="张三";
value = URLEncoder.encode(value, "UTF-8");

然后再Cookie的接收端调用URLDecoder将字符串解码为中文字符串: 

String value = cookie.getValue();
value = URLDecoder.decode(value,"UTF-8");

1.4 Session基本使用

Session:服务端的会话跟踪技术,将数据保存在服务端。JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能。

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

Session发送端: 

@WebServlet("/demo1")
public class SessionDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//存储到Session中
        HttpSession session = request.getSession();//1. 获取Session对象
        session.setAttribute("username","zs");//2. 存储数据
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

Session接收端:

@WebServlet("/demo2")
public class SessionDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取数据,从session中
        HttpSession session = request.getSession();//1. 获取Session对象
        Object username = session.getAttribute("username");//2. 获取数据
        System.out.println(username);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

1.5 Session原理和使用细节

Session的实现是基于Cookie的。

通过打印发送端和接收端的Session地址,可以发现二者的地址都是相同的,因此在一次会话的多次请求中Session是相同的。

原理:Session对象具有唯一标识,叫作id。浏览器向网页发出请求,网页端的Tomcat作出响应,当发现使用了Session,会将id当作一个Cookie发送给浏览器,同时设置头set-cookie:JSESSIONID=id,浏览器会将Cookie存储在内存里。下一次浏览器携带cookie:JSESSIONID=id这个Cokie头访问服务器。服务器识别到Cookie头,就会在内存里寻找是否带有这个头的Session对象。

Session的钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中。

Session的活化:再次启动服务器后,从文件中加载数据到Session中。

所以服务器重启之后Session中的数据不会丢失,前提是要正常的关闭和重启。但是Session不是同一个Session。

Session的销毁:

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

默认:在web.xml中可以用<session-timeout>标签进行更改销毁时间。

1.6 案例

1. 用户登录

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

思路:Web层接收用户名和密码,调用Service层的方法,传入username和password,会在Dao层中执行SQL语句,最终会返回一个User对象,如果User不为null则登录成功,反之登录失败。

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

UserService代码如下:

public class UserService {
    SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();
    public User login(String username, String password){
        SqlSession sqlSession = factory.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.select(username, password);
        sqlSession.close();
        return user;
    }
}

UserService代码如下:

public class UserService {
    SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();
    public User login(String username, String password){
        SqlSession sqlSession = factory.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.select(username, password);
        sqlSession.close();
        return user;
    }
}

 LoginServlet代码如下:

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    private UserService service = new UserService();
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        User user = service.login(username,password);
        if(user != null){
            //xxx,欢迎您,这里的xxx是username,所以要把username存到共享域里,用session
            HttpSession session = req.getSession();
            session.setAttribute("user",user); //第1个参数是键,第2个参数是值
            String contextPath = req.getContextPath(); //动态获取虚拟目录
            resp.sendRedirect(contextPath + "/selectAllServlet");
        }else{
            System.out.println("错误输出了");
            req.setAttribute("login_msg","用户名或密码错误"); //对应的是login.jsp中的${login_msg}用于显示错误信息
            //跳转到login.jsp,还要携带错误信息提示
            req.getRequestDispatcher("/login.jsp").forward(req,resp);
            //转发的原因是在request域里存储数据,只能用转发

        }
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req,resp);
    }
}

还要修改下面2个地方:

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring 会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

 2. 记住用户

 会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

在用户名和密码匹配成功且勾选的前提下的判断语句内加入如下代码:

if("1".equals(remember)){ //"1"写前面可以防止空指针异常
      Cookie c_username = new Cookie("username",username);//勾选了,发送Cookie,先创建对象
      Cookie c_password = new Cookie("password",password);
      c_username.setMaxAge(60*60*24*7);//设置保存时间
      c_password.setMaxAge(60*60*24*7);
      resp.addCookie(c_username); //发送cookie
      resp.addCookie(c_password);
}

更改下面这个地方:

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring
3. 用户注册

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

在Service层的UserService中写入如下代码:

//注册方法
    public boolean register(User user){
        SqlSession sqlSession = factory.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user1 = mapper.selectByUsername(user.getUsername());
        if(user1==null) {
            mapper.add(user);
            sqlSession.commit();
        }
        sqlSession.close();
        return user1 == null;
    }

在Web层的RegisterServlet中写入如下代码:

@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {
    private UserService service = new UserService();
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        boolean flag = service.register(user);
        if(flag){
            req.setAttribute("register_msg","注册成功请登录");
            req.getRequestDispatcher("/login.jsp").forward(req,resp);
        }else{
            req.setAttribute("register_msg","用户名已存在");
            req.getRequestDispatcher("/register.jsp").forward(req,resp);
        }

    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req,resp);
    }
}

然后再修改如下2个地方: 

 ​​​​​​会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

4. 验证码

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

首先要导入一个CheckCodeUtil用于生成验证码:

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

checkCode存储用户输入的验证码,checkCodeGen存储程序生成的验证码,存储在session中,然后对二者进行比对,执行跳转,如果匹配不成功直接返回。

   //获取用户输入的验证码
   String checkCode = req.getParameter("checkCode");
   //获取程序的验证码
   HttpSession session = req.getSession();
   String checkCodeGen = (String)session.getAttribute("checkCodeGen");

   //比对
   if(!checkCodeGen.equalsIgnoreCase(checkCode)){
   req.setAttribute("register_msg","验证码错误");
req.getRequestDispatcher("/register.jsp").forward(req,resp);
   return;
}

checkCodeServlet写入如下代码,用于生成验证码然后存储到session中:

@WebServlet("/checkCodeServlet")
public class CheckCodeServlet extends HttpServlet {
    private UserService service = new UserService();
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletOutputStream os = resp.getOutputStream(); //输出流
        String checkCode = CheckCodeUtil.outputVerifyImage(100, 50, os, 4); //返回验证码的值
        HttpSession session = req.getSession();
        session.setAttribute("checkCodeGen",checkCode);// 存入session
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req,resp);
    }
}

修改如下地方: 

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

三、HTTP相关知识点

1.1 预备知识

B/S架构:Browser/Server,浏览器/服务器 架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发给浏览器即可。好处:易于维护和升级,客户端无需任何部署可以使用新版本。

静态资源:HTML、CSS、JavaScript、图片等。负责页面展示

动态资源:Servlet、JSP等。负责逻辑处理。

数据库:负责存储数据。

Web服务器(Tomcat):负责解析HTTP协议,解析请求数据,并发送响应数据。

PS:自动登录、商品的历史记录是用会话技术实现的(Cookie、Session)。过滤器是过滤掉某些请求。

1.2 HTTP协议及特点

HTTP(Hyper Text Transfer Protocol 超文本传输协议):规定了浏览器和服务器之间数据传输的规则(服务器和客户端之间进行数据交互的格式)。

HTTP协议特点:

1. 基于TCP协议:面向连接、安全

2. 基于请求-响应模型的:一次请求对应一次响应

3. HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。缺点:多次请求间不能共享数据。(Java中用会话技术,如Cookie、Session来解决这个问题)优点:速度快。

1.3 HTTP请求数据格式

1. 请求行:请求数据的第一行。其中GET表示请求方式,斜杠/表示请求资源路径,HTTP/1.1表示协议版本。

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

2. 请求头:第二行开始,格式为key:value形式。(Host:表示请求的主机名。User-Agennt:浏览器的版本。Accept:浏览器能接收的资源类型,接收文本text/*,接收图片image/*,所有*/*。Accept-Language:表示浏览器偏好的语言。Accept-Encoding表示浏览器可以支持的压缩类型。)

3. 请求体:POST请求的最后一部分,存放请求参数。

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

1.4 GET和POST的区别

1. GET请求的请求参数在请求行中,没有请求体。POST请求的请求参数在请求体中。

2. GET请求的请求参数大小有限制,POST没有限制。

1.5 HTTP响应数据格式

1. 响应行:响应数据的第一行。其中HTTP/1.1表示协议版本,200表示响应状态码,OK表示状态机描述。

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记,学习,笔记,http,网络协议,网络,spring

2. 响应头:第二行开始,格式为key:value形式。(Content-Type:表示该响应内容的类型,比如text/html、image/jpeg。Content-Length:表示响应内容的长度。Content-Encoding:表示该响应压缩算法。Cache-Control:指示客户端应如何缓存。)

3. 响应体:最后一部分,存放响应数据。

1.6 状态码

1xx  响应中  ——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它。

 2xx  成功  ——表示请求已经被成功接收,处理已完成。

200  OK  客户端请求成功,即处理成功,这是我们最想看到的状态码

 3xx 重定向  ——(资源已经存储到了其它地方)重定向到其它地方:它让客户端再发起一个请求以完成整个处理。

302  Found  指示所请求的资源已移动到由`Location`响应头给定的 URL,浏览器会自动重新访问到这个页面(请求的资源移动到了另外一个位置,通过Location给出了位置的URL)。
304  Not Modified  没有修改。告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧,相当于隐式的重定向。

 4xx 客户端错误  ——【处理发生错误,责任在客户端】如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。

400  Bad Request  错误的请求。客户端请求有 语法错误 ,不能被服务器所理解。
403  Forbidden  拒绝。服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源 |
404  Not Found  请求资源不存在,一般是URL输入有误,或者网站资源被删除了
428  Precondition Required 有条件请求。 服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头 
429  Too Many Requests  太多请求,可以限制客户端请求某个资源的数量,配合 Retry-After(多长时间后可以请求)响应头一起使用(当前资源有太多人访问)。
431   Request Header Fields Too Large  请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。 
405   Method Not Allowed   请求方式有误,比如应该用GET请求方式的资源,用了POST 

 5xx 服务器端错误  ——【处理发生错误,责任在服务端】如:服务端抛出异常,路由出错,HTTP版本不支持等 |

500   Internal Server Error   服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧。
503   Service Unavailable  服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好。
511   Network Authentication Required  客户端需要进行身份验证才能获得网络访问权限。文章来源地址https://www.toymoban.com/news/detail-695422.html

到了这里,关于会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 客户端会话跟踪技术 Cookie 浅谈

    用户打开浏览器,第一次访问 Web 服务器资源时,会话建立,直到有一方断开了连接则会话结束,例如浏览器或者服务器断开。在一次会话中可以包含多次的请求和响应。 上述的整个过程称为会话。 例如,当我们在浏览器访问一个网站时,浏览器和这个网站服务器就建立了一

    2024年02月03日
    浏览(44)
  • 如何在个人web项目中使用会话技术(cookie&session)?

    编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 服务器软件:apache-tomcat-8.5.27 翻开百度百科关于“ 会话 ”的词条,它是这样描述:“ 在计算机术语中,会话是指一个终端用户与交互系统进行通讯的过程,比如从输入账户密码进入操作系统到退出操作系统就是一

    2023年04月22日
    浏览(45)
  • Qt+QtWebApp开发笔记(四):http服务器使用Session和Cookie实现用户密码登录和注销功能

      前面实现了基础的跳转,那么动态交互中登录是常用功能。   本篇实现一个动态交互的简单登录和注销功能,在Qt中使用Session和Cookie技术。        链接:https://pan.baidu.com/s/1nkmsHgr-11Khe9k6Ntyf_g?pwd=1234     Web应用程序通常处理用户输入。将开发一个登录表单,看看

    2024年02月06日
    浏览(66)
  • HTTP之Session、Cookie 与 Application

    cookie、seesion、application三个都会缓存我们用户状态的数据,使得我们在浏览器访问网站时可以更快速的获取到信息。 主要原因在于HTTP协议是无状态的,我们每次访问服务器,对于服务器来说都是一个单独的请求,没有上下文的联系。以淘宝登录的例子来说明: 假如我们输入

    2024年02月14日
    浏览(40)
  • 基础网络详解4--HTTP Cookie&&Session 思考

        一台多用户浏览器发起了三笔请求,将某款产品放入购物车中,A一次,选择了篮球;B两次,第一次选了足球,第二次选了钢笔。如何确认选择篮球、足球、钢笔的请求属于谁呢?如果不确认属于谁,请求将没有意义。     如果每次请求都带一个用户标识,比如

    2024年02月11日
    浏览(32)
  • Java基础八 - HTTP相关/Cookie/Session/网络攻击

    一、 反射/序列化/拷贝 1. 反射 2. 序列化 3. 动态代理 4. 深拷贝和浅拷贝 1. Session与Cookie 2. 如何避免sql注入 3. XSS(跨站脚本攻击) 4.  CSRF( 跨站网站攻击 )  1. 301与302 redirect(重定向) 2.  forward 和 redirect 的区别 3. tcp和udp 4. OSI 的七层模型 5. HTTP常见状态码 6. HTTP HTTPS区别 7. HTTPS传

    2024年02月11日
    浏览(23)
  • HTTP请求中token、cookie、session有什么区别

     cookie HTTP 无状态的,每次请求都要携带 cookie ,以帮助识别身份 服务端也可以向客户端 set-cookie , cookie 大小 4kb 默认有跨域限制:不可跨域共享,不可跨域传递 cookie (可通过设置 withCredential 跨域传递 cookie ) cookie本地存储 HTML5 之前 cookie 常被用于本地存储 HTML5 之后推荐使用

    2024年02月08日
    浏览(30)
  • 【计算机网络之HTTP篇】Cookie与Session的区别

    目录 Cookie 原理 缺点 Session 原理 区别 cookie是浏览器在本地存储数据的一种机制。         当浏览器向服务器第一次发送请求时,服务器会向浏览器返回一个Cookie,此时 cookie记录着浏览器访问服务器的用户登录状态。         后续浏览器再次访问服务器时,发送请求时也

    2024年02月08日
    浏览(34)
  • http 请求报文响应报文的格式以及Token cookie session 区别

    HTTP 请求报文和响应报文的格式如下: HTTP 请求报文格式: 方法 : 请求方法,例如 GET、POST、PUT、DELETE 等。 路径 : 请求的路径,表示需要访问的资源。 协议版本 : 使用的协议版本,通常是 HTTP/1.1 或 HTTP/2。 请求头部字段:包含了关于请求的附加信息,每个字段由字段名和对

    2024年02月16日
    浏览(40)
  • 跨越HTTP无状态边界:Cookie与Session在Django中的实战应用

    本文深入探索了Django中的Cookie和Session,解析了如何应对HTTP协议的无状态性问题,说明其基础概念,分析工作原理,并讨论何时应选择使用Cookie或Session。文章进阶部分,提出高效管理Cookie和Session,以及如何利用它们进行用户身份验证。 HTTP,即超文本传输协议,是一种应用层

    2024年02月13日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包