zoukankan      html  css  js  c++  java
  • Cookie和登录注册

    1. 什么是Cookie?

    1. 服务器通过 Set-Cookie 头给客户端一串字符串
    2. 客户端每次访问相同域名的网页时,必须带上这段字符串
    3. 客户端要在一段时间内保存这个Cookie
    4. Cookie 默认在用户关闭页面后就失效,后台代码可以任意设置 Cookie 的过期时间
    5. 大小大概在 4kb 以内

    2. cookie的设置获取和删除

    cookie是运行在客户端的,可以用JS来设置cookie.
    首先需要稍微了解一下cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。

    • JS设置cookie:
    document.cookie="name="+username;
    • JS读取cookie:
     var getCookie = function (name) {
     var arr;
    var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
    if (arr = document.cookie.match(reg))
    return unescape(arr[2]);
    else
    return null;
    };
    • JS删除cookie:
    var delCookie = function (name) {
    setCookie(name, ' ', -1);
    };

    3. cookie的主要作用:

    • 会话状态管理(如用户登录状态、购物车、游戏分数和其它需要记录的信息)
    • 个性化设置(如用户自定义设置、主题等)
    • 浏览器行为跟踪(如跟踪分析用户行为)

    4. cookie设置语法:

    document.cookie = "cookieName=mader; expires=Fri, 31 Dec 2017 15:59:59 GMT;
    path=/mydir; domain=cnblogs.com; max-age=3600; secure=true";
    • cookieName=mader :name=value,cookie的名称和值
    • expires=Fri, 31 Dec 2017 15:59:59 GMT: expires,cookie过期的日期,如果没有定义,cookie会在对话结束时过期。日期格式为 new Date().toUTCString()
    • path=/mydir: path=path (例如 '/', '/mydir') 如果没有定义,默认为当前文档位置的路径。
    • domain=cnblogs.com: 指定域 (包括所有子域名)
    • max-age=3600: 文档被查看后cookie过期时间,单位为秒
    • secure=true: cookie只会被https传输 ,即加密的https链接传输

    5. 相关问题:

    我在 Chrome 登录了得到 Cookie,用 Safari 访问,Safari 会带上 Cookie 吗?
    不会,因为浏览器会带上域名Cookie, Cookie 还可以根据路径做限制

    Cookie 存在哪?
    Windows 存在 C 盘的一个文件里

    Cookie会被用户篡改吗?
    可以,可以用Session 来解决这个问题,防止用户篡改

    Cookie 有效期吗?
    默认有效期20分钟左右,不同浏览器策略不同
    后端可以强制设置有效期,具体语法看 MDN

    Cookie 遵守同源策略吗?
    也有,不过跟 AJAX 的同源策略稍微有些不同。
    当请求 qq.com 下的资源时,浏览器会默认带上 qq.com 对应的 Cookie,不会带上 baidu.com 对应的 Cookie
    当请求 v.qq.com 下的资源时,浏览器不仅会带上 v.qq.com 的Cookie,还会带上 qq.com 的 Cookie

  • 相关阅读:
    ar游戏开发入门三步走
    什么是 OpenCL OpenGL
    https 服务器搭建
    javascript 访问cookie信息
    手机网页制作需要注意的一点东西
    asp.net下载文件几种方式
    javascriptM
    PDF转JPG
    java实现PDF转HTML
    关于mysql ERROR 1045 (28000)错误的解决办法
  • 原文地址:https://www.cnblogs.com/gitnull/p/9597330.html
Copyright © 2011-2022 走看看