cookie和session中sessionid怎么来的以及区别

cookie 和session 的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
   考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
   考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、所以个人建议:
   将登陆信息等重要信息存放为SESSION

   其他信息如果需要保留,可以放在COOKIE中


今天面试问到的问题:

创建:sessionid第一次产生是在直到某server端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建。

删除:超时;程序调用HttpSession.invalidate();程序关闭;

session存放在哪里:服务器端的内存中。不过session可以通过特殊的方式做持久化管理(memcache,redis)。

session的id是从哪里来的,sessionID是如何使用的:当客户端第一次请求session对象时候,服务器会为客户端创建一个session,并将通过特殊算法算出一个session的ID,用来标识该session对象

session会因为浏览器的关闭而删除吗?
不会,session只会通过上面提到的方式去关闭。


 (那么Session在何时创建呢?当然还是在服务器端程序运行的过程中创建的,不同语言实现的应用程序有不同创建Session的方法,而在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而再次使用之。


在Web开发,可以使用cookiesession存储用户id,具体方法如下: 1. 使用cookie 在前端,可以使用JavaScript的document.cookie来设置和读取cookie。例如,可以使用以下代码设置一个名为"id",值为"123",过期时间为一天的cookie: ```javascript document.cookie = "id=123;expires=" + new Date(new Date().getTime() + 86400000).toGMTString(); ``` 在后端,可以使用HTTP响应头的Set-Cookie字段来设置cookie。例如,在Node.js,可以使用以下代码将cookie设置为响应头: ```javascript res.setHeader('Set-Cookie', 'id=123;expires=' + new Date(new Date().getTime() + 86400000).toGMTString()); ``` 在后续的请求,可以使用document.cookie来读取cookie的值。 2. 使用session 在前端,可以使用浏览器提供的sessionStorage或localStorage来存储数据。sessionStorage存储的数据仅在当前会话期间有效,而localStorage存储的数据在浏览器关闭后依然有效。例如,可以使用以下代码将id存储到sessionStorage: ```javascript sessionStorage.setItem('id', '123'); ``` 在后端,可以使用服务器框架提供的session间件来实现session功能。例如,在Express框架,可以使用以下代码启用session间件: ```javascript const session = require('express-session'); app.use(session({ secret: 'my-secret-key', resave: false, saveUninitialized: false, cookie: { secure: false, maxAge: 86400000 } })); ``` 在路由处理函数,可以使用req.session来访问session对象,并将id存储到session对象: ```javascript router.get('/', (req, res) => { req.session.id = '123'; res.send('Hello World!'); }); ``` 在后续的请求,可以使用req.session.id来获取存储在session的id值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值