cookie与session

Posted Chris

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cookie与session相关的知识,希望对你有一定的参考价值。

  • cookie

"_octo=GH1.1.969433396.1497770397; _ga=GA1.2.1764394916.1497770397; _gat=1; tz=Asia%2FShanghai"

cookie存在于浏览器当中的

 

服务器返回的响应头里面的信息:cookie的格式,键值对

Set-Cookie:phpSESSID=ot684bvd4n6mlpmsg2pbsubb14; expires=Mon, 19-Jun-2017 07:24:17 GMT; path=/

 

cookie 是存在于客户端浏览器的,是可以设置的,也可以获取的

document.cookie = "";

document.cookie

同域名下面的cookie是共享的  studyit.com/login  studyit.com/index

根目录下面的cookie信息,是可以被所有的子目录访问的,但是子目录的cookie信息,是不能被父级访问到的

类似 于作用域

不同域名之间的cookie信息不能互相访问,不共享

cookie是可以设置过期时间的,默认的生命周期就是页面关闭的时候

 

cookie是有过期时间的,可以自己设置,如果不设置的话,则默认是当前会话结束

 

<script>
    document.cookie="name=zhangsan;age=20;";//虽然用分号隔开了,但是内容不能全部获取到
    document.cookie="name=zhangsan;";
    document.cookie="age=20;";
//这样写是不会将前面的给覆盖掉,但是大小是有限制的,大约在4k
    //因为浏览器每次发送请求的时候都会默认携带cookie,如果cookie的数据太大了会影响传输速度和访问效率
    console.log(document.cookie);
    // 因为cookie就是一个字符串,设置的时候,没有问题,但是获取里面的某相cookie值的时候,非常的不方便,因此可以使用 jquery.cookie这个插件来完成

</script>

 

  <title>Title</title>
  <script src="views/public/assets/jquery/jquery.js"></script>
  <script src="views/public/assets/jquery-cookie/jquery.cookie.js"></script>
  <script>
//    $.cookie(‘name‘,‘lisi‘);
//    console.log($.cookie());
//    console.log($.cookie(‘sex‘)); //使用这种方式来获取cookie的值就方便多了
    
    $.cookie(name,zhangsan,{path:/,expires:new Date(2017-06-20 18:00:00)});
  </script>
</head>
<body>
<p>这是使用jquery.cookie.js在设置cookie了...</p>
</body>

 

  • Session

Session是存在服务器端的,相当于有一个session存区,每当浏览器发送请求的时候,如果不是第一次请求的话,都会携带之前的cookie信息到服务器端,这个时候,就可以和session存储区的sessionid进行匹配,如果匹配成功,则证明是已经登录的用户,如果没有,则证明没有登录过,或是没有访问

Session也是有过期时间的,默认是20分钟。这个20分钟是一个滑动时间

  • 利用cookie实现登陆

因为只能请求过服务器之后,才会由服务器给浏览器发送一条session字符串,存储到浏览器的cookie当中

第二次请求的时候,浏览器就会携带着存储到cookie中的信息一并发送给服务器

服务器接受请求,并获得cookie中的信息,然后和session存储区的数据进行匹配,如果匹配成功,则证明之前已经登陆过

则可以进行后续的跳转,否则跳转到登陆页面

php方式测试cookie

 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<p>使用PHP的方式测试...</p>
</body>
</html>
<script>
  var xhr = new XMLHttpRequest();
  xhr.open(get,setCookie.php);
  xhr.send();
</script>

 

setCookie.php:

 

<?php
  header("Content-type:text/html;charset=utf-8");
//  echo  ‘请求成功了‘;
        setcookie(‘gender‘,‘mmmm‘);
        // cookie也是可以在服务器端进行设置的,是可以跟随响应报文,返回到浏览器端,存储在浏览器的cookie当中
        // 当再次再来访问的时候,会获取到带来的cookie信息,和服务器的session存储区内的信息进行匹配,如果匹配成功则可以进行其它的访问操作
//        var_dump($_COOKIE);  // $_COOKIE可以接收发送过来的所有的cookie信息
   echo json_encode($_COOKIE); // json_encode 是将 $_COOKIE中的内容转换成对象形式的字符串

?>

 

以上是关于cookie与session的主要内容,如果未能解决你的问题,请参考以下文章

cookie 与 session

JavaWeb学习笔记(狂神版)--- 第九节 Cookie与Session

cookie与session

少部分手机浏览器对于COOKIE支持不够导致服务端无法读取session的解决方案

php 练习题-session与 cookie的 取值赋值

解析session与cookie