马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
设置Cookie的几种思路
1. 利用JavaScript设置Cookie
1.1 概述
在客户端(前端)利用JavaScript可以直接操纵DOM元素来设置或读取Cookie。
1.2 实现方式
- function setCookie(name, value, days) {
- var expires = "";
- if (days) {
- var date = new Date();
- date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
- expires = "; expires=" + date.toUTCString();
- }
- document.cookie = name + "=" + (value || "") + expires + "; path=/";
- }
- // 示例:设置一个有效期为7天的Cookie
- setCookie('username', 'John Doe', 7);
复制代码 1.3 注意事项
- JavaScript设置的Cookie只能在同源策略下被读取。
- 不要存储敏感数据,因为这些数据大概会被恶意脚本获取。
2. 利用Spring Boot自动管理Cookie
2.1 概述
Spring Boot 提供了内置的支持来处理Cookie,尤其是在Spring Session中利用Redis作为会话存储时。
2.2 配置示例
- package com.example.yourprojectname.config;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
- import org.springframework.session.web.http.CookieSerializer;
- import org.springframework.session.web.http.DefaultCookieSerializer;
- @Configuration
- @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)
- public class SessionConfig {
- @Bean
- public CookieSerializer cookieSerializer() {
- DefaultCookieSerializer serializer = new DefaultCookieSerializer();
- // 设置 cookie 名称
- serializer.setCookieName("SESSION");
- // 设置路径
- serializer.setPath("/");
- // 设置是否安全
- serializer.setUseSecureCookie(false); // 生产环境中应该设置为 true
- // 设置是否 httpOnly
- serializer.setUseHttpOnlyCookie(true);
- return serializer;
- }
- }
复制代码 2.3 注意事项
- 利用Spring Session可以自动管理session和Cookie。
- 必要注意安全性配置,如HTTPS和HttpOnly。
3. 通过Servlet API设置Cookie
3.1 概述
Servlet API提供了设置Cookie的原生方法,适用于不必要框架自动管理的场景。
3.2 实现方式
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // 创建Cookie对象
- Cookie cookie = new Cookie("username", "John Doe");
- // 设置Cookie的有效期
- cookie.setMaxAge(60 * 60 * 24 * 7); // 有效期为7天
- // 设置Cookie的路径
- cookie.setPath("/");
- // 设置Cookie为HttpOnly
- cookie.setHttpOnly(true);
- // 将Cookie添加到响应中
- response.addCookie(cookie);
- }
复制代码 3.3 注意事项
- Servlet API提供了更多控制Cookie的本领。
- 大概必要手动处理Cookie的生命周期管理。
4. 利用其他框架设置Cookie
4.1 概述
除了Spring Boot之外,其他框架如Spring MVC、Struts等也提供了设置Cookie的方式。
4.2 示例
以Spring MVC为例:
- @RequestMapping(value = "/set-cookie", method = RequestMethod.GET)
- public String setCookie(HttpServletResponse response) {
- Cookie cookie = new Cookie("username", "John Doe");
- cookie.setMaxAge(60 * 60 * 24 * 7);
- cookie.setPath("/");
- cookie.setHttpOnly(true);
- response.addCookie(cookie);
- return "redirect:/";
- }
复制代码 4.3 注意事项
- 不同框架的实现细节大概有所不同。
- 必要相识所利用框架的相关文档。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |