Cookie和会话之间的区别?
我正在networking开发方面进行培训,并正在学习有关JSP和Servlet的知识 。 我有一些HttpSession
知识 – 我在一些示例项目中使用过它。
在浏览器中,我看到了“删除cookies”的选项。 如果我删除了Cookie,它也会删除HttpSession
。
Cookie和会话是一样的吗? 他们之间有什么区别?
会话是包含用户信息的服务器端文件,而Cookie是包含用户信息的客户端文件。 会话有一个唯一的标识符将其映射到特定的用户。 这个标识符可以通过URL传递或保存到会话cookie中。
大多数现代网站使用第二种方法,将标识符保存在Cookie中,而不是将其传递到URL中(这具有安全风险)。 您可能在不知情的情况下使用这种方法,并删除Cookie,以便删除cookie中包含的唯一会话标识符,从而有效地清除匹配的会话。
一个cookie只是简单的文本string,在客户端和服务器之间来回发送。 您可以将名称= bob&password = asdf存储在cookie中,并将其发送到服务器端以识别客户端。 你可以把这个想法和与没有短期记忆的银行出纳员进行交换,并且需要你为每一笔交易确定自己的身份。 当然使用cookie来存储这种信息是不可靠的。 cookies的大小也是有限的。
现在,当银行出纳员知道他/她的记忆问题时,他/她可以在一张纸上写下你的信息,并指定一个简短的身份证号码。 然后,不要每个交易都给你的账号和驾照,你可以说“我是客户12”
将其转换为Web服务器:服务器将相关信息存储在会话对象中,并创build一个会话ID,然后通过cookie将其发送回客户端。 当客户端发回cookie时,服务器可以简单地使用ID来查找会话对象。 所以,如果你删除了cookie,会话将会丢失。
另一种方法是服务器使用URL重写来交换会话ID。
假设您有一个链接 – www.myserver.com/myApp.jsp
您可以浏览该网页并将每个URL重写为www.myserver.com/myApp.jsp?sessionID=asdf
甚至www.myserver.com/asdf/myApp.jsp
和交换标识符的方式。 该技术由Web应用程序容器处理,通常通过将configuration设置为使用无Cookie会话来开启。
Cookies和会话都存储有关用户的信息(使HTTP请求有状态),但不同之处在于,Cookie在客户端(浏览器)存储信息,会话在服务器端存储信息。 从存储有限用户的信息和仅存储每个用户的有限内容的意义上来说,cookie是有限的。 会话不是以这种方式进行限制的。
Google JSESSIONID 。 这将解释Servlet API最初如何使用URL重写,然后如果启用了Cookie,则使用Cookie来pipe理会话。
HTTP是无状态的,因此客户端浏览器必须将每个请求的会话标识发送到服务器。 服务器通过任何方式使用此ID来检索该会话的任何数据,使其在请求的生命周期中可用。
Cookie基本上是跨浏览器访问的全局数组。 许多次用于发送/接收值。 它充当存储机制来访问表单之间的值。 浏览器可以禁用Cookie,与会话相比,它们会增加使用限制。
会话可以定义为login和注销之间的事情。 用户login和注销之间的时间是一个会话。 会话仅在会话时间(即注销之前)存储值。 会话用于跟踪用户的活动,一旦他login。
Cookies存储在浏览器中作为文本文件格式,存储的数据量是有限的,只允许4kb [4096字节] 。$ _ COOKIEvariables不会保存多个同名的cookie
我们可以很容易地访问cookie的值,所以它的安全性不高 。setcookie ()函数必须在出现之前出现
<html>
标签。
会话存储在服务器端,存储的数据量不受限制,在会话中保存多个variables。 我们无法轻松访问cookie值,因此更安全 。
链接: cookies和会话之间的差异
在Asp.net中的会话:
1.维护所有应用程序中的数据。
2.如果当前会话存在,请保存数据。 如果我们需要一些数据可以从多个控制器访问,那么会话就是存储和读取数据的方式。
3.Sessions是包含用户信息的服务器端文件。 [会话是将其映射到特定用户的唯一标识符]
将其转换为Web服务器:服务器将相关信息存储在会话对象中,并创build一个会话ID,然后通过cookie将其发送回客户端。 当客户端发回cookie时,服务器可以简单地使用ID来查找会话对象。 所以,如果你删除了cookie,会话将会丢失。
Cookie是实现客户端和服务器之间会话的一种方式,这样会话信息就存储在cookie中。 但是,这不是持有会话信息的唯一方式,另一种方式是在Url中存储会话信息。