http请求处理流程(讲的很清楚)
前端开发中常见的网络请求处理技巧

前端开发中常见的网络请求处理技巧在现代的web应用程序中,网络请求是前端开发中必不可少的一部分。
从获取数据到发送表单,网络请求是与服务器进行数据交互的基础。
如何处理网络请求是前端开发者需要掌握的重要技巧之一。
本文将介绍前端开发中常见的网络请求处理技巧,帮助读者更好地处理网络请求。
一、发送HTTP请求在前端开发中,发送HTTP请求是与服务器进行数据交互的基础。
常见的HTTP请求方法有GET、POST、PUT和DELETE。
GET请求用于获取数据,POST请求用于发送数据,PUT请求用于更新数据,DELETE请求用于删除数据。
根据具体的业务需求选择合适的HTTP请求方法进行数据交互。
二、处理跨域请求跨域请求是指在浏览器的同源策略下,不同域名、端口或协议之间的网络请求。
为了保证网站的安全性,浏览器默认禁止跨域请求。
在前端开发中,我们常常需要与其他域名下的接口进行数据交互,这时就需要处理跨域请求。
常见的解决跨域问题的方法有JSONP、CORS和代理。
1. JSONP:JSONP是利用script标签没有同源限制的特性来进行跨域请求。
将需要访问的数据封装在回调函数中,通过动态创建script标签的方式加载并执行,服务器返回的数据作为函数的参数传入,从而实现跨域请求。
2. CORS:CORS是一种标准的解决跨域问题的方案,通过服务器设置响应头中的Access-Control-Allow-Origin来允许跨域请求。
在前端开发中,可以通过设置请求头中的Origin来进行跨域请求。
3. 代理:使用代理服务器是另一种解决跨域问题的方法。
在开发环境中,可以配置代理服务器将请求转发到目标服务器,绕过浏览器的同源策略。
三、处理请求错误在网络请求中,可能会出现各种错误,如请求超时、网络连接中断等。
为了保证用户体验,我们需要对这些错误进行处理。
1. 超时处理:设置适当的超时时间,如果请求超过指定时间仍未返回响应,可以认为请求超时,进行相应的处理,如重新发送请求或提示用户网络异常。
前端开发中的HTTP请求处理

前端开发中的HTTP请求处理随着互联网的快速发展,前端开发在今天的技术领域中显得越来越重要。
在前端开发中,处理HTTP请求是不可或缺的一项技能。
本文将就前端开发中的HTTP请求处理进行深入论述。
一、HTTP请求介绍HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体(如HTML)的应用层协议。
它是一种无状态的协议,客户端向服务器发送请求,服务器接收并返回响应。
HTTP请求通常包括请求方法、URL、头部信息和请求体等部分。
二、发起HTTP请求在前端开发中,我们通常使用浏览器来发起HTTP请求。
可以通过JavaScript代码创建XMLHttpRequest对象,并发送异步请求。
XMLHttpRequest对象可以向服务器发送不同类型的请求方法,如GET、POST等。
GET方法用于请求资源,请求参数会附带在URL的后面,可以直接通过URL中的查询字符串传递参数。
例如,发送一个GET请求并传递参数name=John:```var xhr = new XMLHttpRequest();xhr.open("GET", "/api/user?name=John", true);xhr.send();```POST方法用于提交数据,并将请求参数放在请求体中。
例如,发送一个POST请求并传递参数name=John:```var xhr = new XMLHttpRequest();xhr.open("POST", "/api/user", true);xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");xhr.send("name=John");```三、处理HTTP请求在前端开发中,我们通常需要处理服务器返回的响应数据。
网络请求的完整流程

网络请求的完整流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 用户发起请求:用户在浏览器或应用程序中输入网址或执行其他操作,触发网络请求。
http请求响应过程

http请求与响应过程(1)请求方法URI协议/版本请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。
根据HTTP标准,HTTP请求可以使用多种请求方法。
例如:HTTP1.1目前支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。
GET 请求获取由Request-URI所标识的资源。
POST 在Request-URI所标识的资源后附加新的数据。
HEAD 请求获取由Request-URI所标识的资源的响应消息报头。
OPTIONS 请求查询服务器的性能,或查询与资源相关的选项和需求。
PUT 请求服务器存储一个资源,并用Request-URI作为其标识。
DELETE 请求服务器删除由Request-URI所标识的资源。
TRACE 请求服务器回送收到的请求信息,主要用语测试或诊断。
在Internet应用中,最常用的方法是GET和POST。
URI完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。
(2)服务器响应状态码状态代码:状态代码由3位数字组成,表示请求是否被理解或被满足。
状态描述:状态描述给出了关于状态代码的简短的文字描述。
状态代码的第一个数字定义了响应的类别,后面两位没有具体的分类。
第一个数字有五种可能的取值:- 1xx: 指示信息—表示请求已接收,继续处理。
- 2xx: 成功—表示请求已经被成功接收、理解、接受。
- 3xx: 重定向—要完成请求必须进行更进一步的操作。
- 4xx: 客户端错误—请求有语法错误或请求无法实现。
- 5xx: 服务器端错误—服务器未能实现合法的请求。
状态代码状态描述说明200 OK --客户端请求成功400 Bad Request --由于客户端请求有语法错误,不能被服务器所理解。
Http请求的9种方法和4种服务器传参途径

Http请求的9种⽅法和4种服务器传参途径HTTP 请求HTTP1.0 定义了三种请求⽅法: GET, POST 和 HEAD ⽅法。
HTTP1.1 新增了六种请求⽅法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT ⽅法。
1. GETget⽅法请求指定的页⾯信息,返回实体主体。
该请求是向服务器请求信息,请求参数会跟在url后⾯,因此,对传参长度有限制的,⽽且不同浏览器的上限是不同的(2k, 7~8k及其他)。
由于get请求直接将参数暴露在url中,因此对于⼀些带有重要信息的请求可能并不完全合适。
2.POSTpost请求是向指定资源提交数据进⾏处理请求,例如提交表单或者上传⽂件等。
数据被包含在请求体中,POST请求可能会导致新的资源的建⽴和/或已有资源的修改。
post⽅法没有对传递资源的⼤⼩进⾏限制,往往是取决于服务器端的接受能⼒,⽽且,该⽅法传参安全性稍⾼些3.PUTPUT⽅法是从客户端向服务器传送的数据取代指定的⽂档的内容。
PUT⽅法的本质是idempotent的⽅法,通过服务是否是idempotent来判断⽤PUT 还是 POST更合理,通常情况下这两种⽅法并没有刻意区分,根据语义使⽤即可4.DELETE请求服务器删除指定的页⾯,DELETE请求⼀般会返回3种状态码:200 (OK) - 删除成功,同时返回已经删除的资源202 (Accepted) - 删除请求已经接受,但没有被⽴即执⾏(资源也许已经被转移到了待删除区域)204 (No Content) - 删除请求已经被执⾏,但是没有返回资源(也许是请求删除不存在的资源造成的)5.OPTIONS允许客户端查看服务器的性能。
(常见的是跨域预检Preflighted Reqeusts⽅法会采⽤该⽅法)。
⼀般来说,开发中⽤到该⽅法是⽤来获取服务器⽀持的请求类型或者查看服务器类型,来确保接下来发送的请求够安全。
Http请求处理流程

Http请求处理流程本⽂结构:⼀、HTTP请求处理流程的基础1.⽹络分层因特⽹TCP/IP分层模型共有五层:应⽤层、传输层、⽹络层、⽹络接⼝层和物理层。
这种分层模型不同于OSI七层参考模型,但是,是实际使⽤中采⽤的分层⽅式。
ISO提出的OSI(Open System Interconnection)模型将⽹络分为七层,即物理层( Physical )、数据链路层(Data Link)、⽹络层(Network)、传输层(Transport)、会话层(Session)、表⽰层(Presentation)和应⽤层(Application)。
OSI中的层功能TCP/IP协议族应⽤层⽂件传输,电⼦邮件,⽂件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表⽰层数据格式化,代码转换,数据加密没有协议会话层解除或建⽴与别的接点的联系没有协议提供端对端的接⼝TCP,UDP⽹络层为数据包选择路由IP,ICMP,RIP,OSPF,BGP,IGMP传输有地址的帧以及错误检测功能SLIP,CSLIP,PPP,ARP,RARP,MTU 物理层以⼆进制数据形式在物理媒体上传输数据ISO2110,IEEE802。
IEEE802.2TCP/IP分层模型(TCP/IP Layering Model)被称作因特⽹分层模型(Internet Layering Model)、因特⽹参考模型(Internet Reference Model)。
TCP/IP是事实的标准,所以⾃然取其前三层协议【应⽤层、传输层、⽹络层(⽹间层)】作为⽹络分层。
⽽⼜, TCP/IP标准并不定义与OSI七层参考模型中的数据链路层和物理层相对应的功能。
为了衔接这两层,它定义了像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP 协议的数据结构和实际物理硬件之间的接⼝。
所以,将在⽹络层(⽹间层)之下,将由ARP、RAPR等协议组成的层,作为新的⼀个分层(⽹络接⼝层)。
一次完整的浏览器请求流程

⼀次完整的浏览器请求流程当我们在浏览器的地址栏输⼊,然后回车,回车这⼀瞬间到看到页⾯到底发⽣了什么呢?域名解析 --> 发起TCP的3次握⼿ --> 建⽴TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图⽚等) --> 浏览器对页⾯进⾏渲染呈现给⽤户1.域名解析⾸先Chrome浏览器会解析 这个域名(准确的叫法应该是主机名)对应的IP地址。
怎么解析到对应的IP地址?① Chrome浏览器会⾸先搜索浏览器⾃⾝的DNS缓存(缓存时间⽐较短,⼤概只有1分钟,且只能容纳1000条缓存),看⾃⾝的缓存中是否有 对应的条⽬,⽽且没有过期,如果有且没有过期则解析到此结束。
注:我们怎么查看Chrome⾃⾝的缓存?可以使⽤ chrome://net-internals/#dns 来进⾏查看②如果浏览器⾃⾝的缓存⾥⾯没有找到对应的条⽬,那么Chrome会搜索操作系统⾃⾝的DNS缓存,如果找到且没有过期则停⽌搜索解析到此结束.注:怎么查看操作系统⾃⾝的DNS缓存,以Windows系统为例,可以在命令⾏下使⽤ ipconfig /displaydns 来进⾏查看③如果在Windows系统的DNS缓存也没有找到,那么尝试读取hosts⽂件(位于C:\Windows\System32\drivers\etc),看看这⾥⾯有没有该域名对应的IP地址,如果有则解析成功。
④如果在hosts⽂件中也没有找到对应的条⽬,浏览器就会发起⼀个DNS的系统调⽤,就会向本地配置的⾸选DNS服务器(⼀般是电信运营商提供的,也可以使⽤像Google提供的DNS服务器)发起域名解析请求(通过的是UDP协议向DNS的53端⼝发起请求,这个请求是递归的请求,也就是运营商的DNS服务器必须得提供给我们该域名的IP地址),运营商的DNS服务器⾸先查找⾃⾝的缓存,找到对应的条⽬,且没有过期,则解析成功。
Http请求详解(转)----请求+响应各字段详解

Http请求详解(转)----请求+响应各字段详解参考1. HTTP请求格式⾸先介绍HTTP协议:(HTTP,HyperText Transfer Protocol)是上应⽤最为⼴泛的⼀种。
所有的⽂件都必须遵守这个标准。
⼯作原理:1. 由HTTP客户端发起⼀个请求,建⽴⼀个到服务器指定端⼝(默认是)的TCP连接。
连接2. HTTP服务器则在那个端⼝监听客户端发送过来的请求。
⼀旦收到请求,请求3. 服务器(向客户端)发回⼀个状态⾏,⽐如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的⽂件、错误消息、或者其它⼀些信息。
响应4. 客户端接收服务器所返回的信息通过浏览器显⽰在⽤户的显⽰屏上,然后客户机与服务器断开连接显⽰内容HTTP使⽤TCP⽽不是UDP的原因在于(打开)⼀个⽹页必须传送很多数据,⽽TCP协议提供传输控制,按顺序组织数据,和错误纠正。
做过Socket编程的⼈都知道,当我们设计⼀个通信协议时,“消息头/消息体”的分割⽅式是很常⽤的,消息头告诉对⽅这个消息是⼲什么的,消息体告诉对⽅怎么⼲。
HTTP协议传输的消息也是这样规定的,每⼀个HTTP包都分为HTTP头和HTTP体两部分,消息体是可选的,⽽消息头是必须的。
每当我们打开⼀个⽹页,在上⾯点击右键,选择“查看源⽂件”,这时看到的HTML代码就是HTTP的消息体,那么消息头可以通过浏览器的开发⼯具或者插件可以看到,如果⽕狐的Firebug,IE的Httpwatch。
HTTP请求是指:客户端通过发送 HTTP 请求向服务器请求对资源的访问。
它向服务器传递了⼀个数据块,也就是请求信息,HTTP 请求由三部分组成:请求⾏、请求头和请求正⽂。
请求⾏:请求⽅法 URI 协议/版本请求头(Request Header)请求正⽂下⾯是⼀个HTTP请求的数据:POST /index.html HTTP/1.1 请求⽅法 url 协议/版本号Host: localhost 主机地址User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-cn,zh;q=0.5Accept-Encoding: gzip, deflateConnection: keep-aliveReferer: <a target=_blank href="http://localhost/" style="color: rgb(51, 102, 153); text-decoration: none;">http://localhost/</a>Content-Length:25Content-Type:application/x-www-form-urlencoded请求空⾏标志着请求头结束,请求正⽂(请求体)的开始username=aa&password=12341、请求⾏:请求⽅法URI协议/版本请求的第⼀⾏是“⽅法 URL 协议/版本”,并以回车换⾏作为结尾。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.NET平台处理HTTP请求.NET平台处理HTTP请求的过程大致如下:1、IIS得到一个请求;4、.NET运行时被加载;5、非托管代码调用IsapiRuntime.ProcessRequest()方法;6、每一个请求调用一个IsapiWorkerRequest;7、使用WorkerRequest调用HttpRuntime.ProcessRequest()方法;8、通过传递进来的WorkerRequest创建一个HttpContext对象9、通过把上下文对象作为参数传递给HttpApplication.GetApplicationInstance(),然后调用该方法,从应用程序池中获取一个HttpApplication实例;10、"调用HttpApplication.Init(),启动管道事件序列,钩住模块和处理器;11、"调用HttpApplicaton.ProcessRequest,开始处理请求;12、"触发管道事件;13、"调用HTTP处理器和ProcessRequest方法;14、"把返回的数据输出到管道,触发处理请求后的事件。
当一个HTTP请求被送入到HttpRuntime之后,这个HTTP请求通过HTTP管道(HttpRuntime是HTTP管道的入口)被送入到一个被称之为HttpApplicationFactory的一个容器当中,而这个容器会给出一个HttpApplication 实例来处理传递进来的HTTP请求,同时HttpApplication实例会创建一个HttpContext对象来记录HTTP请求的上下文,而后这个HTTP请求会依次进入到如下几个容器中:HttpModule --> HttpHandler Factory --> HttpHandler当系统内部的HttpHandler的ProcessRequest方法处理完毕之后,整个HttpRequest就被处理完成了。
如果想在中途截获一个HttpRequest并做些自己的处理,就应该在HttpRuntime运行时内部来做到这一点,确切的说时在HttpModule这个容器中做到这个的。
过程详解:从本质上讲,主要是由一系列的类组成,这些类的主要目的就是将Http请求转变为对客户端的响应。
HttpRuntime类是的一个主要入口,它有一个ProcessRequest方法,这个方法以一个HttpWorkerRequest类作为参数。
HttpRuntime类几乎包含着关于单个Http请求的所有信息:所请求的文件、服务器端变量、QueryString、Http头信息等等。
使用这些信息来加载、运行正确的文件,并且将这个请求转换到输出流中,一般来说,就是HTML页面;二般来说,也可以是张图片^_^。
对于IIS来说,它依赖于一个叫做HTTP.SYS的内置驱动程序来监听来自外部的HTTP请求。
在系统启动的时候,IIS首先在HTTP.SYS中注册自己的虚拟路径(实际上相当于告诉HTTP.SYS哪些URL是可以访问的,哪些是不可以访问的。
举个简单的例子:为什么你访问的文件不存在时会出现404错误呢?就是在这一步确定的)。
除了映射文件与其对应的处理程序以外,ISAPI还需要做一些其他的工作:1.从HTTP.SYS中获取当前的Http请求信息,并且将这些信息保存到HttpWorkerRequest类中。
2.在相互隔离的应用程序域AppDomain中加载HttpRuntime。
3.调用HttpRuntimeProcessRequest方法。
接下来就是程序员编写的代码(C#)所完成的工作了,然后,IIS接收返回的数据流,并重新返还给HTTP.SYS,最后,HTTP.SYS再将这些数据返回给客户端浏览器。
名词解释:IIS:IIS的4个核心组件:HTTP.sys:将HTTP请求传送到用户模式应用程序的内核模式设备驱动程序。
WWW服务管理和监视组件:配置“万维网发布服务”(WWW服务)并管理工作进程。
工作进程:处理提交到分配给它们的Web应用程序的请求。
主控配置数据库和非Web服务。
MSIL:MicrosoftIntermediateLanguage,微软中间语言。
MSIL是将.Net代码转化为机器语言的一个中间过程,它是一种介于高级语言和基于Intel的汇编语言的伪汇编语言。
同一段MSIL代码可以被不同的编译器实时编译并运行在不同的结构上,因此MSIL本身与机器无关,可以在装有CLR的任一计算机上运行。
CLR:CommonLanguageRuntime,公共语言运行时。
简单的理解,就是一个翻译,把.NET平台的各种语言(C#、VB、JS等)翻译为机器可以执行的语言。
.NET编译器将程序代码编译成MSIL(Microsoft Intermediate Language,微软中间语言),然后再由CLR中的JIT(Just In Time,实时)编译器去编译成机器语言来执行。
CLR在功能上就如同一块虚拟的CPU,它执行MSIL代码、操作数据。
CLR和真实CPU的类似之处在于它们都不直接操作内存中的变量而是使用程序变量的临时拷贝,CLR把这些程序变量存放在堆栈上。
从内存拷贝某个变量到堆栈的行为称作装载(loading),而从堆栈拷回某个变量到内存的行为则被称作存储(storing)。
HttpRuntime:配置 HTTP运行时设置,这些设置确定如何处理对应用程序的请求,HttpRuntime类几乎包含了单个HTTP请求的所有信息,HttpRuntime 是HTTP管道的入口。
HTTP请求到达时,将运行时库加载到要处理请求的进程中,还为将在Web服务器上运行的每个Web应用程序创建一个应用程序域(AppDomain)。
HttpRuntime的ProcessRequest方法驱动所有后续的 WEB处理。
AppDomain:AppDomain对象表示应用程序域,即一个应用程序执行的独立环境,为执行托管代码提供隔离、卸载和安全边界。
它是是微软基于.NET框架设计的概念,找不到其他技术体系中贴切的参照概念。
辅助进程为每个当前正在运行的应用程序维护一个特定的AppDomain。
一个进程中可以有多个AppDomain,但是一个AppDomain只能存在于某个进程中。
线程执行可以涉及多个AppDomain,但某个特定时刻线程仅存在于一个AppDomain中,且线程可以进入其他的AppDomain。
哪些情境下要使用AppDomain:1、需要隔离的程序集,譬如一些特别容易引起崩溃的代码可以考虑单独运行于一个特定的AppDomain。
2、不同安全级别的程序集,如果需要为自己的代码划分安全执行的边界,可以考虑将不同安全级别的代码单独创建于某个设定了不同安全信息的AppDomain。
3、从性能上考虑,有些程序集可能会消耗大量资源,尽管在托管环境下,基本上不存在资源消耗漏洞,但是总会存在特定时间访问密集造成消耗大量资源的情况,这时可以考虑创建单独的AppDomain,在资源消耗超过临界点后进行AppDomain的卸载,适应系统运行要求。
中利用不同的AppDomain 来提供支持就是为了防止一个应用程序的崩溃影响其他应用程序,在不重新启动系统不重新启动IIS不影响自身服务提供的情况下将一个AppDomain卸掉同时启动新的AppDomain,理想情况下可以实现web系统的长时间在线(这以往是昂贵的UNIX的特性,终于被MS借鉴了)。
4、不同版本的同一应用程序集的同时运行。
这个在COM时代是一个大问题,现在通过AppDomain,实现了在一个进程中执行版本不同的两个程序集,可以做到良好的兼容性。
5、动态加载一些程序。
HttpApplication:定义了所有应用程序的通用的方法、属性和事件。
是你实际可以看到的进入HTTP运行时(HttpRuntime)的第一个登录点,它对应到Global.asax文件里定义的基类。
HttpApplication担当主容器,负责加载Web程序,当请求到来时触发事件以及在管道之间传输请求(事件消息的邮递者),然后通过传递HttpContext对象,把事件消息发送给调用的方法(在HttpModule和HttpHandler中)。
每一个请求都将被路由到一个HttpApplication 对象。
HttpApplicationFactory类会为你的程序创建一个HttpApplication对象池,它负责加载程序和给每一个到来的请求分发HttpApplication的引用。
这个HttpApplication对象池的大小可以通过machine.config里的ProcessModel节点中的MaxWorkerThreads选项配置,默认值是20(此处可能有误,根据Reflector反编译的代码,池的大小应该是100)。
HttpApplication 对象池开始启动时通常只有一个HttpApplication对象。
但是当同时有多个请求需要处理时,池中的对象将会随之增加。
而HttpApplication对象池,也将会被监控,目的是保持池中对象的数目不超过设置的最大值。
当请求的数量减小时,池中的数目就会跌回一个较小的值。
HttpApplication对象运行在AppDomain 里。
HttpApplication的主要职责是作为HTTP管道的事件控制器,所以它的接口主要包含的是事件。
事件挂接是非常广泛的,包括以下这些:l BeginRequestl AuthenticateRequestl AuthorizeRequestl ResolveRequestCachel AquireRequestStatel PreRequestHandlerExecutel …Handler Execution…l PostRequestHandlerExecutel ReleaseRequestStatel UpdateRequestCachel EndRequestHttpModule:实现了System.Web.IhttpModule接口的.NET组件。
这些组件通过在某些事件中注册,把自己插入请求处理管道中(HttpApplication事件链)。
当这些事件(HttpApplication对象触发的事件)发生时,HttpModule就会去处理事件(一般是截获请求),所以HttpModule本质上就是过滤器(当一个HTTP请求到达HttpModule时,整个 Framework并未对这个HTTP请求做过任何处理)。
HttpModule有访问HttpContext对象的权限(但某些对象可能还不能使用),可以修改请求,输出响应的内容以及提供自定义的身份验证,另外还可以在特定的程序里,针对的每一个请求提供响应前处理和响应后处理。