对于js、java获取cookie感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍java获取cookie值,并为您提供关于JAVAweb错误-获取Cookie报错Aninvalidcharac
对于js、java获取cookie感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍java 获取cookie值,并为您提供关于JAVA web错误-获取Cookie报错An invalid character [32] was present in the Cookie value、javascript中cookie是什么及怎么读取cookie?、javascript创建cookie、读取cookie、JavaScript获取cookie以及删除cookie详解的有用信息。
本文目录一览:- js、java获取cookie(java 获取cookie值)
- JAVA web错误-获取Cookie报错An invalid character [32] was present in the Cookie value
- javascript中cookie是什么及怎么读取cookie?
- javascript创建cookie、读取cookie
- JavaScript获取cookie以及删除cookie详解
js、java获取cookie(java 获取cookie值)
js获取设置cookie方式
function getCookie(c_name)
{
alert(document.cookie);
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
function checkCookie()
{
username=getCookie(''username'')
if (username!=null && username!="")
{alert(''Welcome again ''+username+''!'')}
else
{
username=prompt(''Please enter your name:'',"")
if (username!=null && username!="")
{
setCookie(''username'',username,365)
}
}
}
js不能获取到的HttpOnly属性
一、属性说明:
1 secure属性
当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。
2 HttpOnly属性
如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。
需要用java获取
Cookie cookies[]=request.getCookies();
JAVA web错误-获取Cookie报错An invalid character [32] was present in the Cookie value
问题描述:在响应中添加cookie的过程中出现以下异常
java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateCookieValue(Rfc6265CookieProcessor.java:182)
org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:115)
org.apache.catalina.connector.Response.generateCookieString(Response.java:1010)
org.apache.catalina.connector.Response.addCookie(Response.java:962)
org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:385)
org.apache.jsp.deal_jsp._jspService(deal_jsp.java:126)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
代码如下所示:
Cookie cookie1 = new Cookie("username", m.replaceAll("").trim());
cookie1.setPath("/");
cookie1.setMaxAge(60 * 60 * 3);
resp.addCookie(cookie1);
req.getRequestDispatcher("/loginsuccess.jsp").forward(req, resp);
由于我是在尝试sql注入,所以输入的内容包含特殊字符,我以为是特殊字符惹的祸,然后我就用正则去除了特殊字符,但是依然报这个错误,在网上查找资料的过程中看到说是空格的影响,所以去除了空格。
Cookie cookie1 = new Cookie("username", m.replaceAll("").replace(" ",""));
cookie1.setPath("/");
cookie1.setMaxAge(60 * 60 * 3);
resp.addCookie(cookie1);
req.getRequestDispatcher("/loginsuccess.jsp").forward(req, resp);
然后,就没有报错啦~
参考链接:https://blog.csdn.net/allan_liu_/article/details/74990162
javascript中cookie是什么及怎么读取cookie?
什么是cookie
由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
Cookie机制
在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。
立即学习“Java免费学习笔记(深入)”;
而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。
Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。
JS设置cookie:
假设在A页面中要保存变量username的值("jack")到cookie中,key值为name,则相应的JS代码为:
document.cookie="name="+username;
在cookie 的名或值中不能使用分号(;)、逗号(,)、等号(=)以及空格。在cookie的名中做到这点很容易,但要保存的值是不确定的。如何来存储这些值呢?方 法是用escape()函数进行编码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,从而可以存储于cookie值中,而且使用此 种方案还可以避免中文乱码的出现。
document.cookie="str="+escape("I love ajax"); // document.cookie="str=I%20love%20ajax";
当使用escape()编码后,在取出值以后需要使用unescape()进行解码才能得到原来的cookie值,
JS读取cookie:
假设cookie中存储的内容为:name=jack;password=123
则在B页面中获取变量username的值的JS代码如下:
var username=document.cookie.split(";")[0].split("=")[1]; //JS操作cookies方法! //写cookies function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() + Days*24*60*60*1000); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); }
读取cookies
function getCookie(name) { var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)) return unescape(arr[2]); else return null; } 删除cookies function delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString(); } //使用示例 setCookie("name","hayden"); alert(getCookie("name")); //如果需要设定自定义过期时间 //那么把上面的setCookie 函数换成下面两个函数就ok; //程序代码 function setCookie(name,value,time) { var strsec = getsec(time); var exp = new Date(); exp.setTime(exp.getTime() + strsec*1); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); } function getsec(str) { alert(str); var str1=str.substring(1,str.length)*1; var str2=str.substring(0,1); if (str2=="s") { return str1*1000; } else if (str2=="h") { return str1*60*60*1000; } else if (str2=="d") { return str1*24*60*60*1000; } } //这是有设定过期时间的使用示例: //s20是代表20秒 //h是指小时,如12小时则是:h12 //d是天数,30天则:d30 setCookie("name","hayden","s20");
以上就是javascript中cookie是什么及怎么读取cookie?的详细内容,更多请关注php中文网其它相关文章!
javascript创建cookie、读取cookie
本文内容分为两个部分进行学习,分别介绍了javascript创建cookie、javascript读取cookie的具体实现方法,供大家学习,具体内容如下
一、创建Cookie
document.cookie = 'key=value';
有特殊字符 使用encodeURIComponent() 进行编码
document.cookie = 'user='+encodeURIComponent('郭钱;');
读取时 使用decodeURIComponent()
例如:
自定义一个创建cookie方法
二、获取cookie
使用字符串方式
使用数组方式
以上就是本文的全部内容,希望对大家的学习有所帮助。
JavaScript获取cookie以及删除cookie详解
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。本文我们就和大家分享JavaScript获取cookie以及删除cookie的知识,希望能帮助到大家。
cookie存在哪?
存在document.cookie中
cookie长啥样?
cookie是一个字符串,长下面这样:
"name=xxx; age=22;"
注意:分号后面有个空格,记住这一点,下面的代码需要特别注意这一点
如果我想根据键名来获取cookie, 怎么做?
<span>function getCookie(name) {<br> var value = ''; ''+ document.cookie;<br> var parts = value.split(''; '' + name + ''='');<br> if(parts.length === 2) {<br> return parts.pop().split('';'').shift();<br> }<br>}<br></span>
原理分析:
假设现在的document.cookie的值为:myName=xxx; age=22; food=apple;
①var value = ''; ''+ document.cookie;使其变为; myName=xxx; age=22; food=apple;
②var parts = value.split(''; '' + name + ''=''); 假设传入的name是age, 那么会根据; age=分割字符串,分割之后得到的数组为:
[''myName=xxx'', ''22; food=apple;'']
③ if(parts.length === 2)说明根据键名得到了对应的值,parts.pop()返回的是数组中的最后一项,即22; food=apple;,然后调用split('';'')得到数组[''22'', ''food=apple;''],然后调用shift()会返回数组的第一项,即22, 即可得到我们想要的值
深思: var value = ''; ''+ document.cookie; 这句代码是整个方法的精髓。
立即学习“Java免费学习笔记(深入)”;
如果我想根据键名来删除cookie, 怎么做?
<span>function deleteCookie(name) {<br> document.cookie = name + ''=; expires=Thu, 01 Jan 1970 00:00:01 GMT;''<br>}<br></span>
原理分析:
设置cookie过期时间小于当前时间,那么就会删除该cookie。
cookie存在哪?
存在document.cookie中
cookie长啥样?
cookie是一个字符串,长下面这样:
"name=xxx; age=22;"
注意:分号后面有个空格,记住这一点,下面的代码需要特别注意这一点
如果我想根据键名来获取cookie, 怎么做?
<span>function getCookie(name) {<br> var value = ''; ''+ document.cookie;<br> var parts = value.split(''; '' + name + ''='');<br> if(parts.length === 2) {<br> return parts.pop().split('';'').shift();<br> }<br>}<br></span>
原理分析:
假设现在的document.cookie的值为:myName=xxx; age=22; food=apple;
①var value = ''; ''+ document.cookie;使其变为; myName=xxx; age=22; food=apple;
②var parts = value.split(''; '' + name + ''=''); 假设传入的name是age, 那么会根据; age=分割字符串,分割之后得到的数组为:
[''myName=xxx'', ''22; food=apple;'']
③ if(parts.length === 2)说明根据键名得到了对应的值,parts.pop()返回的是数组中的最后一项,即22; food=apple;,然后调用split('';'')得到数组[''22'', ''food=apple;''],然后调用shift()会返回数组的第一项,即22, 即可得到我们想要的值
深思: var value = ''; ''+ document.cookie; 这句代码是整个方法的精髓。
立即学习“Java免费学习笔记(深入)”;
如果我想根据键名来删除cookie, 怎么做?
<span>function deleteCookie(name) {<br> document.cookie = name + ''=; expires=Thu, 01 Jan 1970 00:00:01 GMT;''<br>}<br></span>
原理分析:
设置cookie过期时间小于当前时间,那么就会删除该cookie。
相关推荐:
jQuery的Cookie使用方法
cookie属性和方法解析
JavaScript中cookie的添加与删除的基本操作
以上就是JavaScript获取cookie以及删除cookie详解的详细内容,更多请关注php中文网其它相关文章!
关于js、java获取cookie和java 获取cookie值的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于JAVA web错误-获取Cookie报错An invalid character [32] was present in the Cookie value、javascript中cookie是什么及怎么读取cookie?、javascript创建cookie、读取cookie、JavaScript获取cookie以及删除cookie详解等相关内容,可以在本站寻找。
本文标签: