Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[html] 第38天 说说你对cookie和session的理解 #140

Open
haizhilin2013 opened this issue May 23, 2019 · 11 comments
Open

[html] 第38天 说说你对cookie和session的理解 #140

haizhilin2013 opened this issue May 23, 2019 · 11 comments
Labels
html html

Comments

@haizhilin2013
Copy link
Collaborator

第38天 说说你对cookie和session的理解

@haizhilin2013 haizhilin2013 added the html html label May 23, 2019
@wenyejie
Copy link

wenyejie commented May 24, 2019

cookie: 可以通过客户端, 服务端设置, 容量小, 可以通过设置domain来实现同步登录, 除了name, value, 它还有多个选项, domain, path, secure, expires, 客户端和服务端可以通过cookie来通讯, 传递信息

session: 由服务端设置并发起, 是服务端对于用户行为的一种凭证, 通常也是由cookie来维持这种关系, 比如session_id, 或者现在webstorm设置的Webstorm-bb00fc34等! 通过这种维持两者的关系,

@rocky-191
Copy link

一般cookie在客户端产生存储,当然服务端也可以生成cookie。session在服务端产生,二者都可以用来鉴权,服务端产生session,以及对应的sessionid,传给客户端,可以存在cookie里面或者localstorage里面,每次请求携带sessionid,服务端去判定是否有权限访问。现在鉴权的方式一般cookie、session鉴权,token鉴权或者jwt鉴权

@tzjoke
Copy link

tzjoke commented May 28, 2019

cookie: name=value 形式,可以设置过期时间,一般用来保持状态,不然每次都要登录

session:也是保存状态,在服务端产生,一些敏感信息放在服务端session,然后产生一个 sessionId,通过 cookie 传到客户端,然后每次客户端请求会带cookie,服务端从cookie中获取sessionID,从而获取敏感信息。不过浏览器一关就没了,不关过一会儿也会失效

把session放入cookie中便有了session cookie 2223

@Vi-jay
Copy link

Vi-jay commented Jul 29, 2019

cookie存在客户端 session存在服务端 在创建session时会生成一个id 在请求中返回给客户端 存在cookie中 每次请求时 将id带给服务端 服务端拿到session中对应的值作为该用户信息

@Konata9
Copy link

Konata9 commented Sep 16, 2019

由于 http 是无状态的,服务端没法记录客户端的状态。因此 cookiesession 本身就是为了记录客户端的状态。

只是 cookie 是存放在客户端而 session 是记录在服务端。cookie 可以在客户端生成也可以由服务器生成传给客户端,通过 name=value 的形式存储数据。

一般 cookie 会记录一个由服务端生成的 token,session 同样会记录这个 token。服务端就可以通过 token 来鉴别身份。

@canwdev
Copy link

canwdev commented Nov 11, 2019

cookie 是服务端在响应头部(字段名为Set-Cookie)向客户端返回数据时携带的内容,用于区分不同的用户或在前端保存用户状态,一般都是服务端控制生成的,不需要在浏览器端设置。

session 是指会话,由服务端生成一个 token 并记录在服务器中,通过 cookie 保存到浏览器中,这样服务端就可以使用这个 token 来鉴别身份。

@xuxihua
Copy link

xuxihua commented Jan 8, 2020

两者作用:会话保持的功能,为了解决http无状态的问题

cookie:用户通过HTTP第一次访问一个服务器的时候,服务器就会把一个cookie返回给客户端,保存在客户端的内存或者硬盘中,同一个用户下次再访问服务器时,就把cookie带上,这样服务器就认出这个用户了。

session理解:有了session之后,用户只需要携带一个默认名为 JSEESIONID 的cookie去访问服务器,它的 value 是每个用户的唯一ID。用户第一次访问服务器,会生成这个cookie,并且在服务器端实例化一个 HttpSession 对象,这个对象其实就是个Map,可以用来保存用户的信息。下一次用户再访问服务器,就可以根据ID找到这个session,并读取其中保存的用户信息。

区别:
安全性:cookie保存在客户端,可在本地查看修改,安全性不高。session的用户信息保存在服务器端,发给客户端的只是一个用户id,相对更安全
限制:cookie有大小和数量限制,session没有大小限制,只有时间限制

@lizhesystem
Copy link

lizhesystem commented Apr 20, 2020

因为http是一种无状态请求,默认情况下第一次请求和下一次没什么关系,这种无状态的的好处是快速。

cookie是一种基于客户端(浏览器)的会话技术

特点:

  • cookie存储数据在客户端浏览器。
  • 浏览器对于单个cookie的大小有限制(4kb) ,对同一个域名下的总cookie数量也有限制(20个)。

作用:

  • cookie一般用于存出少量的不太敏感的数据。
  • 在不登录的情况下,完成服务器对客户端的身份识别。

session是服务端的会话技术,在一次会话的多次请求间共享数据,Session是保存在服务端的,有一个唯一标识,在服务端保存Session的方法很多,可以通过内存、数据库、文件都有,集群的时候也要考虑Session的转移,在大型的网站,一般会有专门的Session服务器集群。

特点:

  • session用于存储一次会话的多次请求的数据,存在服务器端。
  • session可以存储任意类型,任意大小的数据。

区别session与Cookie:

  • session存储数据在服务器端,Cookie在客户端。
  • session没有数据大小限制,Cookie有。
  • session数据安全,Cookie相对于不安全

@blueRoach
Copy link

cookie和session都是用来解决http无状态协议的不足的
一般来说他们的作用,cookie一般是在客户端来记录用户信息,而session是在服务起端来记录用户信息的
由于cookie是保存在客户端,所以说一般是不会保存一些比较敏感的数据的,而session呢相对来说比较安全
cookie的大小是有限制的4KB,同一个域名下的数量也有限制20个;而session是没有限制的的

使用:
1.在用户登录后,服务器发送一个token给前端,前端通常会保存下来,在与后端通信的时候将token传给服务起端来鉴别用户的身份。
2.用户登录后,将账号和加密的密码保存在cookie里,以便下次访问时不用输入账号密码(通常都会设置一个期限大概30天)

当然,session对比cookie来说,几乎所有的点都比cookie要优秀,更安全、没有大小的数量的限制,唯一不足就是会增加服务起的负担

@MrZ2019
Copy link

MrZ2019 commented Oct 28, 2020

cookie: 可以通过客户端, 服务端设置, 容量小, 可以通过设置domain来实现同步登录, 除了name, value, 它还有多个选项, domain, path, secure, expires, 客户端和服务端可以通过cookie来通讯, 传递信息

session: 由服务端设置并发起, 是服务端对于用户行为的一种凭证, 通常也是由cookie来维持这种关系, 比如session_id, 或者现在webstorm设置的Webstorm-bb00fc34等! 通过这种维持两者的关系,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
html html
Projects
None yet
Development

No branches or pull requests