spring boot 使用cookie中,前后端传入/接受的处理

首先我前端发请求使用的是JQ的ajax,ajax默认是不带上cookie的,所以需要手动设置一下

$.ajax({
	xhrFields: {
	     withCredentials: true
	},
	...
	...
}

其次后端需要对请求体和响应体做处理

首先是允许携带cookie

response.setHeader("Access-Control-Allow-Credentials", "true");

然后就是跨域问题,虽然控制器有@CrossOrigin注解默认处理跨域,但是不够具体,所以还需要单独在方法里设置

response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));

原文

最后附上简单使用的代码
设置cookie

@RestController
@CrossOrigin("*")
public class LiebiaoController {
	@GetMapping("/test1")
    public void test1(String username, String password,HttpServletResponse response,HttpServletRequest request) {
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
    	// 创建cookie并设置kv对
        Cookie cookie = new Cookie("key","value");
        cookie.setMaxAge(60*60*24);        // 设置存活时间
        // 给响应体添加上cookie
        response.addCookie(cookie);
    }
}    

获取cookie

@RestController
@CrossOrigin("*")
public class LiebiaoController {
    @GetMapping("/test2")
    public void test2(HttpServletRequest request,HttpServletResponse response) {
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
        Cookie[] cookies = request.getCookies();
        // 判空处理
        if (cookies == null) {
        }else {
            for (Cookie cookie : cookies) {
            	// 根据cookie的key获取到对应的cookie
                if ("key".equals(cookie.getName())) {
                	...
                	...
                }
            }
        }
    }
}

修改cookie直接重复添加覆盖原有的cookie即可,需要注意给响应体添加修改后的cookie

Cookie cookie = new Cookie("key","465");
response.addCookie(cookie);

删除cookie,如果已经拿到原有cookie就直接设置该cookie的存活时间为0,然后给响应体添加该cookie

// key值一定要对应,value值随意
Cookie cookie = 假定这里就是获取原有的cookie
cookie.setMaxAge(0); // 设置为存活时间
response.addCookie(cookie);

如果不去拿原有cookie就可以通过新建一个key值一样,value随意的cookie,来达到覆盖效果,然后设置存活时间为0,就能秒死掉,以达到删除的效果

Cookie cookie = new Cookie("key",null);
cookie.setMaxAge(0); // 设置为存活时间
response.addCookie(cookie);
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值