zoukankan      html  css  js  c++  java
  • cookie注意事项

    cookie是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。

    四种会话跟踪技术(URL重写、隐藏表单域、Cookie、Session)

    服务端技术:URL重写,Session,Cookie。

    客户端技术:Cookie,隐藏表单域。

    web2.0应用趋势是动态页面加载,通过Session或URL重写识别用户,保存用户状态。

    web3.0应用趋势是前后端分离,通过基于cookie的token识别用户,获取用户状态。

    PS:token建议存放在cookies,而不要存放在LocalStorage 和 SessionStorage。

            原因:LocalStorage 和 SessionStorage可以被js读取,而cookies 可以设置httponly 和secure 属性,提高鉴权机制安全性。

    cookie的特点

    同域,默认带请求凭据(cookie)

    跨域,默认不带请求凭据(cookie)

    session-cookie,关闭浏览器会删除,会话结束或者会话超时就删除。

    cookie,关闭浏览器不会被删除,除非设置了expires/Max-Age,或者是浏览器清除cookies。

    cookie被篡改问题

    给cookie生成一个签名。

    本地调试使用loaclhost跨域设置cookie问题。
    以java为例(参考代码)
    //设置http请求头
    HttpResponse response = null;
    HttpPost post = new HttpPost("http://www.xxx.com");
    post.addHeader("Access-Control-Allow-Credentials", true);
    // Access-Control-Allow-Origin 不能设置通配符号,必须指定域,如果是本地就设置http://localhost:xxx
    post.addHeader("Access-Control-Allow-Origin", "http://www.xxx.com");
    //设置cookie
    Cookie cookie = new Cookie("cookie", "1");
    //设置cookie过期时间
    cookie.setMaxAge(24 * 60 * 60);
    //一定要设置cookie的path属性,否则会获取不到值(undefined)
    cookie.setPath("/");

    PS: 如果允许请求带cookies,会把所有的请求(图片,音视频,css,js)等资源都会发送cookies,从而降低了页面性能。

           为此要使用CDN静态部署资源,避免静态资源请求发送cookie,提高请求的效率,节省请求带宽。

  • 相关阅读:
    java中金钱计算BigDecimal
    SpringBoot的学习二:整合Redis,JPA,Mybatis
    SpringBoot的学习一:入门篇
    Java基础回顾一
    golang 实现冒泡排序
    Go统计键盘输入随机字母的个数
    破解点触码的识别之第三方平台超级鹰的SDK(python3版本)
    RuntimeError: Failed to init API, possibly an invalid tessdata path: E:python36报错
    Django项目部署
    Django REST framework 的功能
  • 原文地址:https://www.cnblogs.com/Sroot/p/8579272.html
Copyright © 2011-2022 走看看