• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP.NET笔记之 Request 、Response 与Server的使用
    1、Request

        

    下面做一个实例,通过Request的一些方法来判断浏览图片是不是在内部浏览,还是直接按网址浏览或者被外部使用

    复制代码 代码如下:

    %@ WebHandler Language="C#" Class="image_Test" %>

     using System;
     using System.Web;

     public class image_Test : IHttpHandler {

         public void ProcessRequest(HttpContext context)
         {
             context.Response.ContentType = "image/JPEG";
             //如果直接访问URLreferrer 就是null ,如果嵌入到页面中请求
             //URLreferrer就是页面的地址
             string picPath=HttpContext.Current.Server.MapPath("DSCF0738.JPG");
             using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(picPath)) {
                 using (System.Drawing.Graphics graphic = System.Drawing.Graphics.FromImage(bitmap))
                 {
                     //不过还是太脆弱,因为UrlReferrer还是由客户端提交
                     //迅雷破解毫无鸭梨
                     if (context.Request.UrlReferrer == null)
                     {
                         graphic.Clear(System.Drawing.Color.White);
                         graphic.DrawString("禁止直接浏览图片", new System.Drawing.Font("宋体", 15),
                             System.Drawing.Brushes.Red, 0, 0);

                     }
                     //http://127.0.0.1:32581/WebSite_zzl01/vivideo_test/request/Request.aspx

                     else if (context.Request.UrlReferrer.Host != "localhost")
                     {
                         graphic.Clear(System.Drawing.Color.White);
                         graphic.DrawString("图片只允许在博客园内部查看", new System.Drawing.Font("宋体", 15),
                             System.Drawing.Brushes.Red, 0, 0);
                     }
                     //转化成流格式输出
                     bitmap.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);

                 }
             }
         }

         public bool IsReusable {
             get {
                 return false;
             }
         }

     }

    html

       img src="image_Test.ashx" />啦啦啦啦

     2、Response

       (1)返回 流,以流的形式返回给客户端
    * 每次write,往缓存里存,不是直接给浏览器,等到存满了或者处理完成才发送到浏览器
    * Flush方法,立即发给浏览器

       (2)反盗链等:不往下执行了在aspx写较好
           context.Response.End();

       (3)aspx 和ashx

            像输出文本、图片、下载地址最后是写在ashx里面,而html内容则写在aspx里面

        (4)重定向  Redirect

              

           Flush实例:

    复制代码 代码如下:

     %@ WebHandler Language="C#" Class="response" %>

    using System;
    using System.Web;

    public class response : IHttpHandler {

        public void ProcessRequest (HttpContext context) {

            //如果是plain则br/>无效果
            context.Response.ContentType = "text/html";
            //耗时操作
            for (int i = 0; i 20; i++)
            {
                System.Threading.Thread.Sleep(500);
                context.Response.Write("第"+i+"步开始执行br/>");
                //采用Flush,立即发给客户端,效果很明显!
                context.Response.Flush();
            }
        }

        public bool IsReusable {
            get {
                return false;
            }
        }

    }
     


    3、server

      (1)Server.Transfer和 Response.Redirect的区别

             *transfer访问只能是内部网站,不能是外部的,而redirect可以

            * transfer是网站内部接管的,只执行一次http请求,而Redirect则是转几次就执行几次http请求并在地址栏中显示

             * transfer会直接把各种信息传过去而Redirect不会
             * 不能重新定向到ashx transfo

               

                  

    实例:

    复制代码 代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    public partial class vivideo_test_server_server : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string text=Request["id"];
            if (text == "1") {
                Response.Write("一");
            }
            else if(text=="2"){
                //请求的信息都会传入服务器
                Server.Transfer("DSCF0738.JPG");
            }
            else if (string.IsNullOrEmpty(text))
            {
                Response.Write("空");
            }
            else {
                //不会取到传过来的参数
                Response.Redirect("苹果.jpg");
                //除非自己给它穿过去
                //Response.Redirect("aaa.aspx?id=1");

            }
        }
    }

    您可能感兴趣的文章:
    • Asp.net内置对象之Request对象(概述及应用)
    • Asp.net中Request.Url的各个属性对应的意义介绍
    • ASP.NET从客户端中检测到有潜在危险的request.form值的3种解决方法
    • asp.net HttpWebRequest自动识别网页编码
    • asp.net下Request.QueryString取不到值的解决方法
    • asp.net中Request.QueryString与Request.Param的区别分析
    • asp.net Request获取url信息的各种方法比较
    • Asp.net response对象与request对象使用介绍
    • asp.net request.PathInfo实现的url重写
    • asp.net实现遍历Request的信息操作示例
    上一篇:asp.net服务器端指令include的使用及优势介绍
    下一篇:ASP.NET笔记之Session、http、web开发原则、xss漏洞的详细介绍
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ASP.NET笔记之 Request 、Response 与Server的使用 ASP.NET,笔记,之,Request,Response,