Cookie作用、安全性问题、和Session的比较

2019-04-27  本文已影响0人  第四单元

是什么

Cookie是服务的发送到用户浏览器并保存在本地的一小块数据,它会在浏览器之后的请求中发送给服务器,用户告知两个请求来自同一浏览器。

作用

HTTP请求是无状态的,使用Cookie可以用来保存状态信息。
例如可以用来保存Session ID

Cookie曾用作客户端数据的存储,但现在新的浏览器已经支持各种方式的本地存储,如storage API或Indexed DB,Cookie已经被淘汰了。

创建过程

服务器发送的相应报文包含Set-Cookie首部字段,客户端得到相应报文后把Cookie内容保存到浏览器中。

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: sessionID=343255390
Set-Cookie: tasty_cookie=strawberry

[page content]

客户端之后对同一个服务器发送请求是,会从浏览器取出Cookie信息并通过Cookie请求首部字段发送给服务器。

GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: sessionID=343255390; tasty_cookie=strawberry

生命周期

可对Cookie设置过期时间,若不设置则默认为浏览器会话期间,关闭浏览器窗口,cookie就消失。

安全性

设置Secure=true的Cookie只能通过Https协议发送。

Cookie和Session的比较

与Cookie不同Session是保存在服务器上的。通过名为JSESSIONID的Cookie保存session id。

1.存取方式不同

Cookie只能报关ASCII字符串
Session能够存取任何类型的数据,如Java对象等

2.隐私策略不同

Cookie存储在浏览器中,对浏览器是可见的,客户端的一些程序可以查看、复制甚至修改Cookie中的内容。而Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露风险

假如使用Cookie存储账号密码等信息,最好进行加密后再存储,提交到服务器后再进行解密。

3有效期不同

Cookie可设置过期时间。默认是浏览器关闭。

Session依赖于名为JSESSIONID的cookie,而该Cookie的过期时间为-1,表示只要关了浏览器就过期,而该服务器上的对应session也就失效了。假如设置session的超时时间过程,服务器累计的Session就会越多,越容易招致内存溢出

4.服务器压力不同

Session保存在服务器上,每个用户都会产生一个session,假如并发用户十分多,会产生十分多的session,消耗大量的内存。

Cookie保存在客户端,不占用服务器资源。

5.浏览器支持不同

Cookie是需要浏览器支持的。假如浏览器禁用了cookie,则不能使用cookie

6.跨域支持上的不同

Cookie支持跨域访问。Session不支持

资料1

资料2


如果本文对您有帮助,欢迎关注我的原创微信公众号“Java技术小站”第一时间接收我的更多文章

Java技术小站.png
上一篇 下一篇

猜你喜欢

热点阅读