zoukankan      html  css  js  c++  java
  • HTTP 流程

       

        asp.net 中http请求的页面通过Imodul,Ihandler,Page页面,处理成HTML代码 返回到IIS 中去了

       HTTP.sys 是操作系统的核心组件,是操作系统侦听HTTP请求的驱动程序,

        HTTP.sys 获取请求后inetinfo.exe(Internet Information Services)就是IIS的处理程序,

        IIS把HTTP请求通过 ISAPI(Internet Service application pregrams  interface) 系统筛选,

        再在CRL里面生成一个httpapplication  创建httprequest  httpresponse 等对象,在传递到httpmodule  再到httphandler  再到httpmodule 再到 httpapplication  把生成页面返回到 HTTP .sys 发回请求端。生成页面,

        所有asp.net页面都继承Page类。而Page继承Httphandler  ,也就是说所有asp.net页面实际上都实现Ihttphandler ,执行返回HTML代码,或者数据流。极端思维:我们甚至不用HTMl页面直接在 httphandler 返回数据量或者HTML代码。就行。

         HTTP请求------>Http.sys捕获------->IIS处理------>ISAPI处理(根据不同后缀名,找对应的处理程序)----->创建HTTPAplication(包含httprequest,httpresponse等对象)------>Httpmodule----->IHttphandler(所以得Page页面都实现了个接口)------>Httpmodule----->IIS------>HTTP.sys---->返回给客户端 

       ISAPI 对应处理程序实际上是IHttphandler来实现的;

       httphandler 在web.config中的配置

        path:请求的正则匹配,只有满足匹配时才执行这个httphandler

        verb:http请求的方式;如:get post,head,debug。四种方式

        type:httphandler的命名空间

       <httpHandlers>
                <add path="*.cd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
                <add path="*.adprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
                <add path="*.lddprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
                <add path="*.sdm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
                <add path="*.sdmDocument" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
                <add path="*.mdf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
                <add path="*.ldf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
               
            </httpHandlers>

       httpmodule在web.config 中的配置

          name:httpmoudule的名称  type:httpmodule的命名空间;

     <httpModules>
                <add name="Profile" type="System.Web.Profile.ProfileModule" />
                <add name="ErrorHandlerModule" type="System.Web.Mobile.ErrorHandlerModule, System.Web.Mobile, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
                <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
                <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />
                <add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            </httpModules>

       

        

  • 相关阅读:
    Redis 简介
    图片懒加载、selenium和PhantomJS
    Python网络爬虫之三种数据解析方式
    Scrapy框架之CrawlSpider
    Scrapy 框架
    python 网络爬虫概念与HTTP(s)协议
    Mysql概念及基本操作
    Python re 模块
    线程与进程应用场景
    全局解释器锁 GIL
  • 原文地址:https://www.cnblogs.com/jiangqiang/p/2780001.html
Copyright © 2011-2022 走看看