设置Cookie的几种思路

打印 上一主题 下一主题

主题 556|帖子 556|积分 1668

设置Cookie的几种思路

1. 利用JavaScript设置Cookie

1.1 概述

在客户端(前端)利用JavaScript可以直接操纵DOM元素来设置或读取Cookie。
1.2 实现方式

  1. function setCookie(name, value, days) {
  2.     var expires = "";
  3.     if (days) {
  4.         var date = new Date();
  5.         date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
  6.         expires = "; expires=" + date.toUTCString();
  7.     }
  8.     document.cookie = name + "=" + (value || "")  + expires + "; path=/";
  9. }
  10. // 示例:设置一个有效期为7天的Cookie
  11. setCookie('username', 'John Doe', 7);
复制代码
1.3 注意事项



  • JavaScript设置的Cookie只能在同源策略下被读取。
  • 不要存储敏感数据,因为这些数据大概会被恶意脚本获取。
2. 利用Spring Boot自动管理Cookie

2.1 概述

Spring Boot 提供了内置的支持来处理Cookie,尤其是在Spring Session中利用Redis作为会话存储时。
2.2 配置示例

  1. package com.example.yourprojectname.config;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
  5. import org.springframework.session.web.http.CookieSerializer;
  6. import org.springframework.session.web.http.DefaultCookieSerializer;
  7. @Configuration
  8. @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)
  9. public class SessionConfig {
  10.     @Bean
  11.     public CookieSerializer cookieSerializer() {
  12.         DefaultCookieSerializer serializer = new DefaultCookieSerializer();
  13.         // 设置 cookie 名称
  14.         serializer.setCookieName("SESSION");
  15.         // 设置路径
  16.         serializer.setPath("/");
  17.         // 设置是否安全
  18.         serializer.setUseSecureCookie(false); // 生产环境中应该设置为 true
  19.         // 设置是否 httpOnly
  20.         serializer.setUseHttpOnlyCookie(true);
  21.         return serializer;
  22.     }
  23. }
复制代码
2.3 注意事项



  • 利用Spring Session可以自动管理session和Cookie。
  • 必要注意安全性配置,如HTTPS和HttpOnly。
3. 通过Servlet API设置Cookie

3.1 概述

Servlet API提供了设置Cookie的原生方法,适用于不必要框架自动管理的场景。
3.2 实现方式

  1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2.     // 创建Cookie对象
  3.     Cookie cookie = new Cookie("username", "John Doe");
  4.     // 设置Cookie的有效期
  5.     cookie.setMaxAge(60 * 60 * 24 * 7); // 有效期为7天
  6.     // 设置Cookie的路径
  7.     cookie.setPath("/");
  8.     // 设置Cookie为HttpOnly
  9.     cookie.setHttpOnly(true);
  10.     // 将Cookie添加到响应中
  11.     response.addCookie(cookie);
  12. }
复制代码
3.3 注意事项



  • Servlet API提供了更多控制Cookie的本领。
  • 大概必要手动处理Cookie的生命周期管理。
4. 利用其他框架设置Cookie

4.1 概述

除了Spring Boot之外,其他框架如Spring MVC、Struts等也提供了设置Cookie的方式。
4.2 示例

以Spring MVC为例:
  1. @RequestMapping(value = "/set-cookie", method = RequestMethod.GET)
  2. public String setCookie(HttpServletResponse response) {
  3.     Cookie cookie = new Cookie("username", "John Doe");
  4.     cookie.setMaxAge(60 * 60 * 24 * 7);
  5.     cookie.setPath("/");
  6.     cookie.setHttpOnly(true);
  7.     response.addCookie(cookie);
  8.     return "redirect:/";
  9. }
复制代码
4.3 注意事项



  • 不同框架的实现细节大概有所不同。
  • 必要相识所利用框架的相关文档。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表