V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Lpl
V2EX  ›  问与答

用 cookie 还是用 session ?

  •  
  •   Lpl · 2016-11-11 15:15:58 +08:00 · 2030 次点击
    这是一个创建于 2927 天前的主题,其中的信息可能已经有所发展或是发生改变。

    语境:

    一个字符串,当用户访问的时候会带到 URL 的参数中: http://xxxx?param=anystring

    现在想要的就是当用户访问其他页面的时候,这个 param 参数也能保留下来,等到做某次操作使用。 浏览器关闭这个参数不需要保留

    问题:

    我是直接在服务端接收到这个参数,然后放到 session 中了。同事说不行,理由如下: 这个东西本身就是客户端功能,不需要保存到服务器再返回回去。直接存到 cookie 中

    关于这个问题到底怎么做才会比较好?

    11 条回复    2016-11-11 22:47:00 +08:00
    zhouxuchen
        1
    zhouxuchen  
       2016-11-11 15:17:58 +08:00
    试试用 sessionStorage
    pubby
        2
    pubby  
       2016-11-11 15:22:19 +08:00 via Android
    cookie

    session 的话要看具体实现,如果用缓存实现的,可能在生命周期内被提前清除
    shoaly
        3
    shoaly  
       2016-11-11 15:36:22 +08:00
    判断的标准是 这个 anystring 但不担心用户更改
    如果不担心 可以储存到 cookie, 比如 登录框中 上次一次的用户名, 因为反正都会做登录验证的判断
    有一些敏感的不能存, 通过 ?param=isvip, 用户当前是否允许操作 VIP 的功能, 这种需要放到 session
    66beta
        4
    66beta  
       2016-11-11 16:33:01 +08:00
    纯前端自己用的参数,存 cookie
    sessionStorage 只在当前 tab 有效
    sutra
        5
    sutra  
       2016-11-11 17:02:58 +08:00
    放 session 里会增加服务器负载均衡时的复杂度。
    LichMscy
        6
    LichMscy  
       2016-11-11 17:16:07 +08:00
    可以试试 localStorage ,关闭浏览器的时候 clear 掉
    lightening
        7
    lightening  
       2016-11-11 17:23:38 +08:00
    你用的是什么语言啊? Rails 里默认的 Session 就是用 Cookie 实现的。
    billlee
        8
    billlee  
       2016-11-11 19:28:08 +08:00
    不担心用户自己篡改的用 cookie, 否则用 session.
    kkzxak47
        9
    kkzxak47  
       2016-11-11 19:51:06 +08:00 via Android
    你同事没错。
    session 一般都是用 cookie 来实现的吧,你这个参数就是客户端记住的,传到服务器再传回来是在做无用功。
    kkzxak47
        10
    kkzxak47  
       2016-11-11 20:08:18 +08:00 via Android   ❤️ 1
    服务器识别出客户端谁是谁,就是要客户端提供一个凭证,用这个凭证来找对应 session ,不论凭证具体实现是 cookie 还是 local storage 还是客户指纹等等。
    你说的这个参数和这个 session 凭据一样,一直是客户端负责存储,既然不需要用它从服务器取数据,传回服务器就没有意义。
    Lpl
        11
    Lpl  
    OP
       2016-11-11 22:47:00 +08:00 via Android
    多谢各位解惑,我回去修改下代码。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2748 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 86ms · UTC 10:06 · PVG 18:06 · LAX 02:06 · JFK 05:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.