最近在测试记住密码这个功能发现bug,由于后端使用的是CAS,所以只能本地调试。一开始浑然不知cookie只能存储服务器的页面上的数据,使用vscode作为开发工具,它不像webstorm一样一打开页面就是localhost:8080之类的地址,而是文件路径的地址,类似于这样:file:///D:/works/test.html 的。那么如果你使用vscode开发调试cookie首先要解决的就是启动本地服务器,那么下面就是详细的步骤:
1、终端输入:
npm install http-server -g
2、下载完后,在项目目录打开终端输入:
hs
3、这样就可以启动web服务器了,很简洁方便;
那么接下来就是cookie的set, get, del 三步操作:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>cookie</title>
</head>
<body>
<form id="myForm" action="login" method="post">
<input type="text" value="" class="inp" name = "username" id="username" />
<input type="password" value="" class="inp" name = "password" id="passwrod" />
<div style="margin: 10px;">
<span><input type="checkbox" id="remember"><label for="remember">记住我</label></span>
<span style="float: right;">注册</span>
</div>
<button type="button" class="inp" id="btn" onclick="onsubmits()">立即登录</button>
</form>
<script type="text/javascript">
// window.onload = function(){
var oForm = document.getElementById('myForm');
var oUser = document.getElementById('username');
var oPswd = document.getElementById('passwrod');
var oRemember = document.getElementById('remember');
//页面初始化时,如果帐号密码cookie存在则填充
if (getCookie('username') && getCookie('password')) {
oUser.value = getCookie('username');
oPswd.value = getCookie('password');
oRemember.checked = true;
}
//复选框勾选状态发生改变时,如果未勾选则清除cookie
oRemember.onchange = function() {
if (!this.checked) {
delCookie('username');
delCookie('password');
}
};
//表单提交事件触发时,如果复选框是勾选状态则保存cookie
var onsubmits = function() {
console.log(123);
if (remember.checked) {
setCookie('username', oUser.value, 7); //保存帐号到cookie,有效期7天
setCookie('password', oPswd.value, 7); //保存密码到cookie,有效期7天
console.log(55);
}
};
// };
//设置cookie
function setCookie(name, value, day) {
var date = new Date();
date.setDate(date.getDate() + day);
document.cookie = name + '=' + value + ';expires=' + date;
};
//获取cookie
function getCookie(name) {
var reg = RegExp(name + '=([^;]+)');
var arr = document.cookie.match(reg);
if (arr) {
return arr[1];
} else {
return '';
}
};
//删除cookie
function delCookie(name) {
setCookie(name, null, -1);
};
</script>
</body>
</html>