会话跟踪Cookie

1.cookie 是客户端会话跟踪技术,它是存储在客户端浏览器的,我们使用 cookie 来跟踪会话,我们 就可以在浏览器第一次发起请求来请求服务器的时候,我们在服务器端来设置一个cookie
比如第一次请求了登录接口,登录接口执行完成之后,我们就可以设置一个 cookie ,在 cookie 当中 我们就可以来存储用户相关的一些数据信息。比如我可以在 cookie 当中来存储当前登录用户的用户 名,用户的ID 。服务器端在给客户端在响应数据的时候,会自动 的将 cookie 响应给浏览器,浏览器接收到响应回来 的 cookie 之后,会 自动 的将 cookie 的值存储在浏览器本地。接下来在后续的每一次请求当中, 都会将浏览器本地所存储的 cookie 自动 地携带到服务端。
2.接下来在服务端我们就可以获取到 cookie 的值。我们可以去判断一下这个 cookie 的值是否存
在,如果不存在这个 cookie ,就说明客户端之前是没有访问登录接口的;如果存在 cookie 的值,就 说明客户端之前已经登录完成了。这样我们就可以基于 cookie 在同一次会话的不同请求之间来共享数据。
我刚才在介绍流程的时候,用了 3 个自动:
服务器会 自动 的将 cookie 响应给浏览器。
浏览器接收到响应回来的数据之后,会 自动 的将 cookie 存储在浏览器本地。
在后续的请求当中,浏览器会 自动 的将 cookie 携带到服务器端。
为什么这一切都是自动化进行的?
是因为 cookie 它是 HTP 协议当中所支持的技术,而各大浏览器厂商都支持了这一标准。在 HTTP
协议官方给我们提供了一个响应头和请求头:
响应头 Set-Cookie :设置 Cookie 数据的
请求头 Cookie :携带 Cookie 数据的
代码测试
@Slf4j
@RestController
public class SessionController {
// 设置 Cookie
@GetMapping ( "/c1" )
public Result cookie1 ( HttpServletResponse response ){
response . addCookie ( new Cookie ( "login_username" , "itheima" ));
// 设置 Cookie/ 响应 Cookie
return Result . success ();
}
// 获取 Cookie
@GetMapping ( "/c2" )
public Result cookie2 ( HttpServletRequest request ){
Cookie [] cookies = request . getCookies ();
for ( Cookie cookie : cookies ) {
if ( cookie . getName (). equals ( "login_username" )){
System . out . println ( "login_username:
" + cookie . getValue ()); // 输出 name login_username cookie
}
}
return Result . success ();
}
}
优缺点
优点: HTTP 协议中支持的技术(像 Set-Cookie 响应头的解析以及 Cookie 请求头数据的携
带,都是浏览器自动进行的,是无需我们手动操作的)
缺点:
移动端 APP(Android IOS) 中无法使用 Cookie
不安全,用户可以自己禁用 Cookie
Cookie 不能跨域
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值