简单唠唠Request和Response

来源:互联网 发布:阿里云备案邮寄地址 编辑:程序博客网 时间:2024/05/27 00:29

前言

ASP.NET 是.NET FrameWork的一部分,是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建它们。 指 Active Server Pages(动态服务器页面) ,运行于 IIS(Internet Information Server 服务,是Windows开发的Web服务器)之中的程序 。

是不是看了上边一段话,还是糊里糊涂的,简单理解,Web 窗体页是用 ASP.NET 技术生成的,这样来说是不就理解了一些了。

另外ASP.NET 又是基于 .NET Framework 生成的,因此整个框架都可用于任何 ASP.NET 应用程序。可以使用任何与公共语言运行库兼容的语言(包括 Microsoft Visual Basic、Visual C# 和 JScript .NET)来创作应用程序。


当今Web开发技术可谓是百家争鸣,作为一个菜鸟来说,需要提前了解区分一下各种技术,以防走更多弯路。

 


什么是Request和Response呢?

          今天我们的重点是Request和Response,Request和Response对象起到了与服务器与客户端之间的信息传递作用。Request对象用于接收客户端浏览器提交的数据,而Response对象的功能则是将服务器端的数据送到客户端浏览器。

         我们平时打开浏览器,输入网址,点击Enter按键,然后我们想要的网页就呈现在我们的面前,可是这个过程是怎么实现的呢?

         简单来说是这样的:

               (1)当我们按下Enter按键后,浏览器就会发送消息给该网址所在的服务器,这个过程叫做HTTP Request,Request故名思议,就是浏览器要向服务器发出请求。

              (2)服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应处理,然后把消息回传给浏览器。这个过程叫做HTTP Response,Response故名思议,就是服务器针对浏览器的请求Request,进行相应Response。

             (3)浏览器收到服务器的Response信息后,会对信息进行相应处理,然后展示给我们。

  上面的三个过程,其实就是两个程序之间的对话,或者叫做两个进程之间的对话,其中一个程序是浏览器,被称作客户端或者Client,用来发送Request;另一个程序是Web服务器,可以是apache等等,用来针对用户的Request,做出相应的Response,称为服务器端或者Server。过程如下图所示:

 


        我们的Request 有可能是经过了代理服务器(使用代理服务器无法保证账号安全, 输入的账号和密码可能会保存在代理服务器上),最后才到达Web服务器的。过程如下图所示:

    

代理服务器就是网络信息的中转站,有什么功能呢?

        1. 提高访问速度, 大多数的代理服务器都有缓存功能。

        2. 突破限制, 也就是FQ了

        3. 隐藏身份。

HTTP协议

        理解了上面的过程,接下来就又出现另外一个问题,Client与Server之间传送数据,对方如何能够识别彼此之间传送的信息呢?那么就需要彼此之间传送信息遵循一定的规范,这就是HTTP协议,因此叫做HTTP Request和HTTP Response。Client与Server端都遵循HTTP协议进行Request和Response。但是http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Session和Cookie机制来维护状态.

为什么我们需要Session?

  客户端与服务器端通过HTTP Request和HTTP Response进行数据通信,根据HTTP Request和HTTP Response数据格式进行数据解析,但是还有一个问题,那就是HTTP是无状态协议( stateless protocol),也就是说每次客户端向服务器端Request,服务器端都会认为是一个新的Request,无法记录客户端的信息,这种情况就会导致很多问题,例如我们登陆进一个网站,如果我们需要访问别的页面,我们点击完链接后,服务器会认为是一个新的用户,如果该页面需要验证用户信息,那么客户端就需要重新输入登陆信息,导致很多的问题。

  如何解决这个问题呢?就是通过Session。

  服务器端对于访问的客户端,会生成该客户端的唯一信息,存储在Session中,Session位于服务器,可以保存在服务器的内存中,也可以保存在文件系统中,也可以保存在服务器的数据库中,对于Session的管理,也是值得琢磨的一件事情。

  有了Session还不够,因为每次访问的客户端都是一次新的Request,因此需要在Request的信息中包含有客户端的信息,才能够与服务器端的Session进行对比,来确定是不是同一个客户端。所以需要Session Tracking,才能正确的辨识客户端。

如何在Request的信息中包含有客户端的信息? 

  这时就用到了Cookies,存储在客户端,每一个cookie与一个唯一的SessionID关联,当客户端发送Request的时候,该信息会一块发过去,然后服务器端就能够根据Cookie的信息与Session的信息比对,来判断客户端的Request是否第一次请求;

  Cookie中会包含过期时间信息,如果Cookie过期,那么服务器端也会认为是第一次Request,进而需要用户登录;

  Cookies中还能包含其他敏感信息,而且在客户端保存,因此可能会产生风险,想想也是,毕竟尝到了小甜头,自然要承受一定的风险;

  为了避免Cookies产生的风险,许多浏览器可以禁止Cookie;

  禁止Cookie后,有些网站就无法登录了,例如csdn,如果在浏览器中禁止Cookie,就无法登录了。

结语

       抽象的东西总是很难理解,Web应用程序的内部工作也是如此,刚刚接触,感觉很是迷糊,Fighting!相信不久之后就可以真正理解这些东西了。。