1. JS Cookie的设置与获取
JS在前端页面设置和获取Cookie,封装函数如下:
function setCookie(name, value, days=30, path="/"){
// 设置cookie方法
var exp = new Date();
exp.setTime(exp.getTime()+(days*24*60*60*1000)); // 设置cookie到期时间
document.cookie = name + "=" + value + ";expires=" + exp.toGMTString() + ";path="+path+";";
}
function getCookie(cname){
// 获取cookie方法
const name = cname + "=";
var res= document.cookie.split(';');
for(var i=0; i<res.length; i++) {
var data = res[i].trim();
if (data.indexOf(name)==0) { return data.substring(name.length,data.length); }
}
}
function delCookie(name, path="/") {
// 删除cookie方法
var exp = new Date();
exp.setTime(exp.getTime() - (1000)); // 设置cookie到期时间为1秒钟之前
var cval = getCookie(name);
if (cval != null){
document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString() + ";path="+path+";";
}
}
这三个封装的函数使用方式:
// 设置cookie方法示例
setCookie("username", "zjs");
// 设置带过期时间的cookie方法示例
setCookie("username", "zjs", days=7);
// 获取cookie方法示例
var username = getCookie("username");
if(username){
// 获取cookie成功
console.log(username);
}else{
// cookie不存在
console.log("ERROE: Can't get 'username' from cookie!");
}
// 删除cookie方法示例
delCookie("username");
值得注意的是,设置cookie是一项异步操作,需要一定的响应时间,当按照先后顺序设置完cookie后紧接着便获取cookie,可能会造成查询不到cookie的错误。实际操作中应在设置完成后,间隔一段时间再进行cookie获取。
// 将cookie操作写入函数中
function GetUserName(){
// 获取cookie方法示例
var username = getCookie("username");
if(username){
// 获取cookie成功
console.log(username);
}else{
// cookie不存在
console.log("ERROE: Can't get 'username' from cookie!");
}
}
// 间隔 1 秒 (1000毫秒) 后执行此函数
setTimeout(GetUserName(), 1000);
2. 在JAVA后端取得Cookie
使用springboot框架,在controller层取得cookie
在接口函数中增加参数 HttpServletRequest request, 即可使用 request.getCookies() 函数获取到cookie数组。
@Controller
@CrossOrigin(origins = "*", maxAge = 3600)
public class CookieTestController {
// cookie测试接口
@RequestMapping(value = "/cookieTest")
@ResponseBody
public String cookieTest(HttpServletRequest request){
String getKey1 = "username";
String getValue1 = null;
String getKey2 = "password";
String getValue2 = null;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
Cookie ck = cookies[i];
if (ck.getName().equals(getKey1)) {
getValue1 = ck.getValue();
}
if (ck.getName().equals(getKey2)) {
getValue2 = ck.getValue();
}
}
}
System.out.printly(getKey1+": "+getValue1);
System.out.printly(getKey2+": "+getValue2);
return "{\""+getKey1+"\": \""+getValue1+"\",
\""+getKey2+"\": \""+getValue2+"\"}";
}
}