zoukankan      html  css  js  c++  java
  • 使用HttpModule实现网址重写和HttpHandler实现页面静态化冲突的解决办法

    使用HttpModule实现网址重写和HttpHandler冲突的解决办法
    功能描述:
    1. 用HttpModule做了一个重写URL的功能,实现所有访问html的请求要经过httpModule处理,如果页面中有对应的aspx页面,就转发到那个页面,如果没有,就转发到原来请求的那个页面。

    2. 但后面有做了一个使用HttpHandler是aspx页面静态化的功能,实现访问某一类的页面的时候,如果没有就使用模板创建html页面,如果有,就访问已存在的页面。

    3. 做完上面两步,使用html的方式访问aspx页面时没问题,但访问项目中已有的html页面就有问题了,不是html文件夹中的静态化页面不能访问,就是其他html页面无法访问。

    对于这个问题,有以下几点应该注意:

    1.httpModule页面中:

    技能点1:判断是否存在对应的aspx页面。如果存在aspx页面,使用app.Context.RewritePath(newUrl)进行路径重写,这个不会与页面中的session冲突。
    技能点2:判断没有aspx页面的html请求页面是否是html静态页面文件夹中的页面。如果不是直接转发到请求的页面,如果是,不进行处理,留给实现页面静态化的HttpHandler进行处理。
    代码如下:

         public void BeginRequest(object sender, EventArgs e)
            {
                HttpApplication app = sender as HttpApplication;
                //app.Response.Write("开始处理请求!");
                //4.1 截获请求网址
                string url = app.Request.RawUrl;
                //4.2 判断网址是否符合要求,判断是否进行重发到指定页面
                if (url.LastIndexOf(".html") > 0)
                {
                    string newUrl = url.Substring(0,url.Length-4);
                    //确定存在对应的aspx页面才可以进行URl重写
                    if (File.Exists(app.Server.MapPath(newUrl + "aspx")))
                    {
                        //转发到指定页面
                        app.Server.Transfer(newUrl + "aspx");
                    }
                    else
                    {
                        //如果没有对应的aspx页面,要再次判断是否为html文件夹下的静态页面
                        //如果是静态页面的请求,不进行处理,如果不是进行转发
                        //app.Response.Write(url.LastIndexOf("html/") > 0);
                        if(url.LastIndexOf("html/")<= 0)
                        {
                            app.Server.Transfer(url);//转发请求的网址
                        }
                    }
                }
            }
  • 相关阅读:
    2019年3月6日 980. Unique Paths III
    2019年3月05日 961. N-Repeated Element in Size 2N Array
    2019年3月4日 701. Insert into a Binary Search Tree
    2019年3月1日 804. Unique Morse Code Words
    2019年2月28日 654. Maximum Binary Tree
    2019年2月26日 Unique Email Addresses、To Lower Case、Encode and Decode TinyURL
    Nexus Repository Manager 3 远程命令执行漏洞(CVE-2020-10199)复现
    常见的Web源码泄漏漏洞及其利用
    Nmap-脚本检测CVE漏洞
    Vulnhub-dpwwn-01靶机过关记录
  • 原文地址:https://www.cnblogs.com/xyyt/p/3978777.html
Copyright © 2011-2022 走看看