使用javascript读取Cookie注意事项

注意:在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>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值