注意:在cookie 的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格这是cookie的赋值规则。
;分号这样定义只对expires path domain系统属性有效,但对于自定义属性是不能这样连写的
通过javaScript脚本语言,可以手动设置一个名称叫JSESSIONID的Cookie来伪造Cookie,从而达到欺 骗服务器端的目的(伪造session会话),只要服务器端上的那个sessionid还没过期,那么客户端浏览器上就可以伪造名称叫JSESSIONID的Cookie来欺 骗服务器端
直接上代码
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>使用javascript读取Cookie</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/body.css">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/mark.css">
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/console.css">
<script type="text/javascript" src="${pageContext.request.contextPath}/js/console.js"></script>
</head>
<body>
<center>
<h1>使用javascript读取Cookie</h1>
<a href="https://zhidao.baidu.com/question/556972955.html">
在Cookie的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格这是cookie的赋值规则
</a>
<input type="button" value="查看所有Cookie" οnclick="showAllCookie()"><br>
<br>
<div id="show_All_Cookie" class="testDiv3"></div>
</center>
</body>
<script type="text/javascript">
/*
window.onload = function() {
alert(document.cookie);
}
*/
window.onload = function() {
testSetCookie();
setMyCookie('age', '12');
/*
通过javaScript脚本语言,可以手动设置一个名称叫JSESSIONID的Cookie来伪造JSESSIONID的Cookie,从而达到欺
骗服务器端的目的(伪造session会话),只要服务器端上的那个sessionid还没过期,那么客户端浏览器上就可以伪造名称叫JSESSIONID的Cookie来欺
骗服务器端
*/
//document.cookie = "JSESSIONID=0C76F1E6F8EAF44FA8A455A5B5744B5A";//设置名称叫JSESSIONID的Cookie来欺骗服务器端
}
/*
使用javaScript设置Cookie
可参考网页https://zhidao.baidu.com/question/556972955.html
注意:在cookie 的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格这是cookie的赋值规则。
;分号这样定义只对系统属性有效,expires path domain 但对于自定义属性是不能这样连写的
*/
function testSetCookie(){
// document.cookie = "onLineName=jerry;hometown=jiangxi";//不支持这种带分号的写法
//可以使用下面这2行的写法,分开写
document.cookie = "onLineName=jerry";
document.cookie = "hometown=jiangxi";
/*
(把第一个等号以后的值全部自定义属性编码),用escape()函数进行编码,当使用escape()编码后,在取出值以后需
要使用unescape()进行解码才能得到原来的cookie值。
*/
// document.cookie='mother='+escape('lily;father=tom');
// alert(unescape(document.cookie));
// document.cookie='mother=hello';
// alert(unescape(document.cookie));
var date = new Date();
date.setTime(date.getTime() + 2 * 365 * 24 * 60 * 60 * 1000); //设置date为当前时间加一年
document.cookie = "employeeId=828;expires=" + date.toGMTString();
}
//写入cookie到主域,设置过期时间为一年
function setMyCookie(name, value) {
console.log(name, value)
/*
;分号 这样定义只对系统属性有效,expires path domain
document.cookie="userId=828; expires=...."这样的;分号是允许的,但对于自定义属性是不能这样连写的
*/
//var str = name + "=" + escape(value) + ";domain=.baidu.com;path=/";
var str = name + "=" + escape(value) + ";domain=localhost;path=/";
var date = new Date();
date.setTime(date.getTime() + 365 * 24 * 60 * 60 * 1000); //设置date为当前时间加一年
str += ";expires=" + date.toGMTString();
console.log(str)
document.cookie = str;
}
//显示所有的Cookie
function showAllCookie() {
var divNode = document.getElementById("show_All_Cookie");
// cookie值中包含等号、分号等特殊字符的处理
// var cookiesInfo = decodeURIComponent(document.cookie);
//如果Cookie.setHttpOnly(true);HttpOnly为true的话,document.cookie是获取不到HttpOnly等于true的Cookie
// divNode.innerHTML = '<font color="red">' + cookiesInfo + '</font>';
divNode.innerHTML = '<font color="red">' + document.cookie + '</font>';
// alert(document.cookie);
}
</script>
</html>