Session和Cookie

Http是无状态协议.如果要做一个登入系统

怎么知道使用者是否已经登入了?Session和Cookie可以解决我们需要存资料的问题

Session:

Session存在于Server端,Session会将我们想要储存的资料存在于Server端。

Asp.net为例:

`HttpContext.Session["UserId"]="12345";`

上面的程式码可将资讯存于Server的记忆体中
但如果今天有两个使用者请求Server同时将Session["UserId"]附值,请问会依照谁的为主?

答案:两个都会存在,因为两者Session物件是独立的,伺服器会依照"SessionId"来辨识而SessionId
SessionId以cookie的形式存在,会存在Client

Cookie:

一般浏览器会限制:

每个使用者的浏览器只能支援(存取)300个Cookie每个浏览器只能针对同一个伺服器存取20个Cookie每个Cookie的大小最多仅4k Bytes的容量有些浏览器可以把Cookie的功能关掉,若关掉后Cookie就不能使用存放在Client端会依照目前网域来创建资料夹并存入

(其实Http协议并无以上这些限制,这些限制是浏览器给的><)

保存帐号密码的登入系统为例:

使用者在登入页面输入帐号和密码,提交表单将合法用户资讯存入Session中并将用户资料存入Cookie中回传Client收到回传的Http回应头中有 Set-Cookie 会依照提供的资讯来存放Cookie下次请求时Http请求时会先去寻找当前网域的资料夹中有无cookie,如果有会一并传到Server端

注意:cookie存放在client端 也就代表会有安全上的疑虑

我们在cookie中加密来增加安全性别在里面存一些机密资料,例如:帐号·密码...可以存取Token让server去找说此token是否合法可以使用

参考资料:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章