2021-03-30

cookie ,url 重写, 隐藏表单域## 标题
由于HTTP协议是一种无状态的协议,也就是说当用户请求一个资源,服务器端根据请求做出响应,回发到客户端后,就关闭了连接(HTTP无状态协议详细请参考我的另外一篇文章)
通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分) http://blog.csdn.net/lvpin/archive/2007/06/09/1645770.aspx

但是,我们在实际生活中可能有过网上购物的经历,通过不同的请求购买到了不同的商品,并放在“购物车”中,那么对于服务器来说,它是如何知道车中已经有了些什么物品?同样的,在支付费用时服务器又怎么样来确定以前所建立的购物车是属于哪一位客户的呢?很显然,HTTP连接是一个请求,一个响应,独立的连接,无法解决。这个时候就出现了3种类型的方法来满足这一实际需要——cookie ,url 重写, 隐藏表单域。

1.Cookie 实现会话跟踪机制。

通俗的说,就是每当客户端请求一次,服务器端就响应一次,并且客户端将接受到的结果保存在本地机上,一个保存了用户信息的文件,称谓Cookie 。此后,当客户端再次对同一个服务器作出请求时,首先,服务器端会检索Cookie 文件信息,判断是否为同一用户,先前有哪些信息等等。再作出响应,并把这些响应的结果再次写到客户端的 Cookie 中去,替换或者追加一些内容。如此循环,请求和响应,服务器就可以根据Cookie知道各个请求是否来自于同一客户,且包括此前保存的有用的信息。请求-响应-写入Cookie-断掉连接 再次请求-读取Cookie-响应-写入Cookie-断掉连接。

最明显的例子就是 我们在登录我们的邮箱,或者一个网站(如CSDN)时,就可以把用户名和密码保存在我们本地机上的Cookie。下次当再次打开这个网站时,会发现我们根本就没有输入姓名和密码就直接进入了以前要去的一个版快。这个实际上就是Cookie的实际运用,当我们请求这个网站时(服务器),服务器读取了Cookie的信息,来判断这个用户是否以前也登陆过这个网站,直接读取用户名和密码代替用户完成了登陆动作。

再举一个例子,第一张页面是登陆框,要求输入用户ID号和密码,第二张页面是选择购物同时支付费用。那么服务器如何判断这些物品是哪一位用户的?因为登陆和提交购物支付是两种不同的请求,不会保存一个持续的连接的状态。如果用 Cookie 的话,就把第一次用户的ID,密码等保存到一个有标识的Cookie中。第二次请求要求支付以选择好的物品时,这个时候再次读取Cookie 得到用户ID号,根据这个ID号,在此用户的帐户上扣除购买物品的费用。这样就实现了 能够把用户ID “保存”在不同的页面请求中了。

2.URL重写

但是有一种情况就是客户端禁止使用Cookie的话,该如何实现会话跟踪呢?这个时候最简单的就是 URL重写,以参数的形式附加到要请求页面的URL后面。当第二张页面提交时,会同时解析此URL ,得到所需要的参数。

比如一个页面我们可以这样来操作:
那么我们在第二个页面就能得到 参数 name 的值 simonlv 参数 password的值111 ,那么下次提交的时候,这几个值就确保了服务器端仍然能够知道是哪一个用户。

但是这样有一个缺点,就是 暴露了一些敏感的信息。那么在我们的 response对象中有一个 encodeURL的方法,通过这个方法能把
类似于这样的形式,这样就实现了参数在不同页面间的传递,并且隐藏了部分敏感的信息。

encodelURl 做了些什么动作,这个我会在以后的文章中详细介绍,它其实就是根据 正则表达式 来解析http://blog.csdn.net/simonlv/ 类似于这样的格式,如果匹配 就转向 http://blog.csdn.net/default?name=simonlv

这样的内部资源,这个内部资源估计是看不到的。

这样的一种形式就是重写了URL ,实现了参数的传递。
连接数据库dbhelper工具类## 标题

web.Config 中设置数据库连接相关信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值