http请求状态保持的四种方法

Cookie
cookie:听起来很高大上的亚子,其实呢他就是一段文本而已,明文。存储在客户端的浏览器的内存或者磁盘里面。而且每个界面都会有自己的cookie,主要存储的是和网站相关的文本字符串。主要以键值对的方式存在。
cookie使用的原理是什么呢?

cookie的存储位置及过期时间设置

如果我们指定了cookie的过期时间,那么存储字啊客户端的磁盘上面,如果我们没有指定cookie的过期时间,那么存储在客户端浏览器的内存当中。
当然如果你设置了过期时间,那么cookie按照你所设置的进行失效处理,当你没有设置过期时间时,那么就会在浏览器会话结束后失效

什么时候适合使用cookie呢?

购物车、用户Id等。
例:我们在用户登录的页面将用户名添加到cookie进行存储:

Response.Cookies["userid"].Value = "123456";

然后在另一个页面进行获取该用户Id:

id=Request.Cookies["userid"].Value;

当然除了这些cookie还可以设置过期时间、跨域等。

那我们可以无限制的存储cookie吗?

大多数浏览器最大为4K的cookie,所以我们只会用cookie存储少量的数据或者存储用户ID的标识符等。 大多数浏览器最多存储一个网站创建20个cookie,如果视图创建更多的,那么旧的就会被删除,有些浏览器会对所有站点的cookie总数做出绝对限制,通常为300个。而且cookie存储的值其实是不安全的。

Session
session:是一个服务端的保护机制,可以把各种类型的数据存储在session中,这些数据是存储在服务端的开辟的一块内存当中的,这块内存就是session。session是需要借助cookie才可以达到想要的保存标识的目的
session使用的原理:

session的存储都是有自己的一个sessionid的,也是为了区分哪个用户的session变量,通过用户的浏览器在访问的时候返回给服务器。
下面的这个举例是通过cookie来实现的的session,当然当浏览器不支持cookie时,可以使用URL重写来实现。

使用URL重写与上面原理不同的就是,当执行到response redirect时,服务器是将sessionid直接附加在URL路径的后面。

session的过期时间设置

Session默认的过期时间是20min,过期时间为滑动过期时间。可以通过Session的属性Timeout来修改。
当浏览器关闭而且不到过期时间时,SessionId会没有(因为seesionid是以cookie发送到浏览器的,并且没有指定过期时间,所以浏览器一关,那么cookie就会被删除,自然sessionId也就没了),但是内存里面还是该数据了,不过没有SessionId一样不能得到Session的值。最后20分钟之后服务器也会把Session内容删除掉

隐藏域
什么是隐藏域呢?
其实简单来说就是我在一个页面当中设置了一个隐藏的控件,用户看不到。我们在表单中插入隐藏域染回收集或者发送信息,让被处理的表单可以使用。当浏览器点击提交表单的时候,然后隐藏域里面的信息一起发送到服务器。

具体的作用详解

URL重写
URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程。举个例子来说,如果通过浏览器进来的URL是“UserProfile.aspx?ID=1”那么它可以被重写成 “UserProfile/1.aspx”,这样的URL,这样的网址可以更好的被网站所阅读。一般情况下,在浏览器不支持cookie时,会使用这种方法。比如我们常常用的分页就是URL重写的一种体现


————————————————
版权声明:本文为CSDN博主「make_1998」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/make_1998/article/details/103757846

你有什么心态,就有什么样的人生。管不好自己的心态,注定你就是个弱者。
原文地址:https://www.cnblogs.com/LQZ888/p/12125738.html