• 什么是Token,javascript 如何获取和禁用 cookie


    什么是Token?

    • token 是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,token 便应运而生。
    • 「简单 token 的组成」:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token 的前几位以哈希算法压缩成的一定长度的十六进制字符串)
    1. 客户端使用用户名跟密码请求登录
    2. 服务端收到请求,去验证用户名与密码
    3. 验证成功后,服务端签发一个 token ,并把它发送给客户端
    4. 客户端接收 token 以后会把它存储起来,比如放在 cookie 里或者 localStorage 里
    5. 客户端每次发送请求时都需要带着服务端签发的 token(把 token 放到 HTTP 的 Header 里)
    6. 服务端收到请求后,需要验证请求里带有的 token ,如验证成功则返回对应的数据

    js如何获取/禁用cookie

    假设cookie中存储的内容为:name=jack;password=123

    则在B页面中获取变量username的值的JS代码如下:

    1. arusername=document.cookie.split(";")[0].split("=")[1];
    2. //JS操作cookies方法!
    3. //写cookies
    4. function setCookie(name,value){
    5. var Days = 30;
    6. var exp =newDate();
    7. exp.setTime(exp.getTime() + Days*24*60*60*1000);
    8. document.cookie = name +"="+ escape (value) +";expires="+ exp.toGMTString();
    9. }
    10. //读取cookies
    11. function getCookie(name){
    12. var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    13. if(arr=document.cookie.match(reg))
    14. return unescape(arr[2]);
    15. else
    16. return null;
    17. }
    18. //删除cookies
    19. function delCookie(name) {
    20. var exp = new Date();
    21. exp.setTime(exp.getTime() - 1);
    22. var cval=getCookie(name);
    23. if(cval!=null)
    24. document.cookie= name + "="+cval+";expires="+exp.toGMTString();
    25. }

    使用cookie

    document.cookie = "name=value;expires=evalue; path=pvalue; domain=dvalue; secure;”

    name是必选参数,expires、path、domain、secure都是可选参数。

    expires=evalue 该对象的有效时间 只支持GTM 标准时间,即要将时间转换,toUTCString()(默认为当前浏览器 会话有用,关闭浏览器就消失);

    1. var date = new Date();  
    2. date.setTime(date.getTime()+2000);//获取当前时间并加上 2 秒钟  
    3. alert(date.toUTCString());//格林威治时间 (GMT) 把 Date 对象转换为字符串,并返回结果
    4. alert(date.toGMTString());//与上面的结果一样,但是这个方法已经被上面取代了
    5. document.cookie="name=vae;expires="+date.toUTCString();
    6. alert(document.cookie); // name=vae  
    7. setTimeout(function(){alert(document.cookie)},4000);//4 秒后打印空的字符串

    path=pvalue 限制访问 cookie 的目录,默认情况下对于当前网页所在的同一目录下的所有页面有效;

    domain=dvalue 用于限制只有设置了的域名才可以访问;如果没有设置,则默认在当前域名访问;

    secure=true|false 默认是 true 不安全传输

    安全设置,指明必须通过 安全的通信通道来传输(https) 才能获得 cookie,true 不安全,默认值;false 安 全,必须通过 https 来访问。

    注意:cookie是与浏览器相关的,用户很可能禁用浏览器的cookie功能;cookie可能被删除。因为每个cookie都是硬盘上的一个文件,因此很有可能被用户删除; cookie安全性不够高,所有的cookie都是以纯文本的形式记录于文件中,因此如果要保存用户名密码等信息时,最好事先经过加密处理。cookie 在保存时,只要后面保存的 name 相同,那么就会覆盖前面的 cookie。

    cookie 禁用 ?

    问题描述:

    sessionID通过cookie保存在客户端,如果将cookie禁用,必将对session的使用造成一定的影响。

    解决这个问题的办法是:URL重写

    1. servlet中涉及向客户端输出页面元素的时候,可以在相应的请求地址外面包上一层方法,也就是说使用response.encodeURL(“请求地址”);为请求地址添加一个JSESSIONID的值。
    2. servlet中涉及跳转到新的页面时,可以使用response.encodeRedirectURL(“请求地址”);为请求地址添加一个JSESSIONID的值。
  • 相关阅读:
    论坛议程|COSCon'23开源商业(V)
    PostgreSQL 难搞的事系列 --- vacuum 的由来与PG16的命令的改进 (1)
    如何理解Java中眼花缭乱的各种并发锁?
    写作技巧网站或工具
    如何在windows linux子系统Ubuntu 22.04.2 TLS中安装nvm
    【无标题】
    unity中UI、shader显示在3D物体前
    基于Matlab使用 IMU、磁力计和高度计估计方向和高度(附源码)
    支付宝电脑网站支付,异步通知
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java医院疫情管理系统4f9a9
  • 原文地址:https://blog.csdn.net/hl199626/article/details/125514788