关于 Cookie的作用域问题

本文探讨了在Java SpringMVC项目中遇到的Cookie作用域问题。通过设置Filter进行登录验证,发现即使设置了Cookie,后台仍无法获取。问题在于未指定Cookie的路径导致其仅在特定路径下生效。解决方案是使用cookie.setPath()方法,指定为"/"以实现全局路径,或"/shop/"以使整个项目目录下的页面都能访问Cookie。
摘要由CSDN通过智能技术生成

今晚有做过一个登录验证,即防止用户跳过登录页面直接访问内部资源。
原理:设置过滤器Filter,对每次请求判断:是否有cookie (user, id), 若有,是否此cookie和session中所存储对象id一致。若无cookie或不一致,则重定向跳转回登录或注册页面。

中间一直存在一个问题,即设置了cookie且可以在浏览器中查到,但是后台始终无法getCookie,原因如下:
Cookie的默认作用域为当前应用请求中,默认不设置path的时候,只会在请求和servlet同路径的情况下才会携带cookie中存储的数据,包含同级目录和下级目录。

例如,我的登录页面为shop/login.jsp , 因此同级目录为shop. 而我在Controller中shop/user/logIn 中添加的cookie, 因此同级目录为shop/user。因此Cookie只在shop/user下有效,而在shop/下无效。每次访问其他资源或登录完成后重定向跳转其他资源如index.jsp时,其路径为shop/index.jsp,并不在shop/user下,因此无效。

所以,请切记添加cookie.setPath()来指定路径,

  • cookie.setPath(“/”) 即为全路径
  • cookie.setPath(“/shop/") 即为项目目录下,因此shop/index.jsp可以使用cookie。
@Controller
@RequestMapping<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值