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");

}
    }
}

(0)

相关推荐

  • jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML

    摘要:本节补充ajax学习笔记1中 第二种方式:使用XMLHttpRequest对象的responseXML的方式来接受XML数据对象的DOM对象 在ajax学习笔记1中已经对准备工作和需要用到的知识做了比较详细的介绍,本节主要介绍需要修改的代码以及新增的代码 .新增一个servlet类 AJAXXMLServer.java 复制代码 代码如下: import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServle

  • C#中Request.Cookies 和 Response.Cookies 的区别分析

    .NET中提供了读写Cookie的多种方法,Request.Cookies 是客户端通过 Cookie 标头形式由客户端传输到服务器的 Cookie:Response.Cookies 在服务器上创建并以 Set-Cookie 标头的形式传输到客户端.也就是说,一个是客户端向服务器端发送的来的,一个是服务器发送到客户端的. 第一次创建Cookies的时候,下面的2种读取方法读取到的内容是一样: C# 代码 复制代码 代码如下: HttpCookie hc = new HttpCookie("Use

  • @ResponseBody 和 @RequestBody 注解的区别

    @ResponseBody 和 @RequestBody 注解的区别 1 前言 在详述 @ResponseBody 和 @RequestBody 注解之前,咱先了解一下 @RequestMapping 注解,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径:用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法.例如. /** * 用于类上,可以没有 */ @RequestMapping

  • Asp.net response对象与request对象使用介绍

    1.Response:服务器发给客户端信息,或者说是服务器的向用户发送输出结果. Redirect:让客户端重新定向到指定的 URL. Write:写出指定字符串. 2.request:客户端发给服务器,或者说是从客户端取得信息. form:从使用post提交方式的表单获取表单元素的值. querystring:取回查询字符串中的变量值,适用于get提交方式的表单. 举一个列子:一个登陆页面,还有一个主页面.当登陆页面登陆成功后,就自动跳转到主页面. 1.login.aspx 复制代码 代码如下

  • AngularJS的ng Http Request与response格式转换方法

    本文实例讲述了AngularJS的ng Http Request与response格式转换方法.分享给大家供大家参考,具体如下: angular作为Single Page Application推荐的交互方式当然是基于json的ajax调用.但今天要说的是当你不幸工作在一个遗留或者不可控制的服务上,而这服务是基于非json提交方式(或许是常规表单(form)提交,或者其他自定义数据格式),那么我们只能改变ng内部$http默认request/response格式转化方式. 所幸的是ng $htt

  • JSP内置对象:Request和Response的简单介绍及使用

    JSP内置对象之request对象客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例.序号 方 法 说 明 1 object getAttribute(String name) 返回指定属性的属性值 2 Enumeration getAttributeNames() 返回所有可用属性名的枚举 3 String getCharacterEncoding() 返回字符编码方式 4 int getContentLen

  • JSP中Servlet的Request与Response的用法与区别

    JSP中Servlet的Request与Response的用法与区别 简介:Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了.要向客户机输出数据,只需要找response对象就行了. 一,Request Request代表请求对象,其中封装了对请求中具有请求行.请求头.实体内容的操作的方法

  • JSP 中request与response的用法详解

    JSP 中request与response的用法详解 概要: 在学习这两个对象之前,我们应该已经有了http协议的基本了解了,如果不清楚http协议的可以看我的关于http协议的介绍.因为其实request和response的使用大部分都是对http协议的操作. request对象的介绍 我们先从request对象进行介绍: 我们知道http协议定义了请求服务器的格式: 请求行 请求头 空格 请求体(get请求没有请求体) 好了,这里我们就不详细介绍了,我们只看几个应用就可以了,没什么难度: 应

  • http调用webservice操作httprequest、httpresponse示例

    REST WCF 使得我们调用Web服务时,可以通过HttpRequest的交互简单完成.那么老版的WebService能否做到呢?WebService中通过HttpContext.Current.Rquest/Response,我们一样也可以改造WebMethod. 客户端: 复制代码 代码如下: // 创建一个DataTable DataTable data = new DataTable("Project"); data.Columns.Add("Name")

  • 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(Ht

  • ASP.NET笔记之文章发布管理小系统案例

    母版页:SiteFont.Master 复制代码 代码如下: <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="SiteFont.master.cs" Inherits="协同企业管理系统.SiteFont" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/

  • javascript asp教程第七课--response属性

    Below is a table of Response Properties along with examples and explanations. Response Properties Buffer Response.Buffer = trueAllows for the buffering of output CacheControl Response.CacheControl="Public" Sets Cache to "Public" or &qu

  • ASP.NET Core读取Request.Body的正确方法

    前言 相信大家在使用ASP.NET Core进行开发的时候,肯定会涉及到读取Request.Body的场景,毕竟我们大部分的POST请求都是将数据存放到Http的Body当中.因为笔者日常开发所使用的主要也是ASP.NET Core所以笔者也遇到这这种场景,关于本篇文章所套路的内容,来自于在开发过程中我遇到的关于Request.Body的读取问题.在之前的使用的时候,基本上都是借助搜索引擎搜索的答案,并没有太关注这个,发现自己理解的和正确的使用之间存在很大的误区.故有感而发,便写下此文,以作记录

  • Fckeditor XML Request error:internal server error (500) 解决方法小结

    原来一直能用的ecshop后台信息发布里面的fckeditor上传功能,换了个机器后不能用了.以为是文件损坏,上传一边不行. 什么xml错误,还弹出一个大的JavaScript alert警告框,内容就是服务器端错误的500内容 网上搜,又说是配置问题,主题问题,想想都不应该,直接请求 复制代码 代码如下: filemanager/connectors/php/connector.php 出了服务器的500错误,html文件能访问,txt也行. 后来从根目录开始查,发现到fckeditor目录里

  • asp.net内置对象 Response对象使用介绍

    Response对象是HttpRespone类的一个实例.该类主要是封装来自ASP.NET操作的HTTP相应信息.Response对象将数据作为请求的结果从服务器发送到客户浏览器中,并提供有关响应的消息.它可用来在页面中输出数据,在页面中跳转,还可以传递各个页面的参数. 一.向页面中输出数据 语法格式        Response对象通过Write方法或WriteFile方法在页面输出数据,输出的对象可以是字符,字符串,字符数组,对象或文件.        用Response输出数据时,ASP

  • asp.net实现遍历Request的信息操作示例

    本文实例讲述了asp.net实现遍历Request的信息操作.分享给大家供大家参考,具体如下: #需求: 在服务端获取从客户端发送过来的所有数据信息: #方案: 1.服务端代码 public void ProcessRequest(HttpContext context) { //打印所有参数信息 context.Response.Write("Params:"); for (int i = 0; i < context.Request.Params.Count; i++) {

  • ASP.NET笔记之 ListView 与 DropDownList的使用

    1.Repeater用来显示数据.ListView用来操作数据 InsertItemTemplate和updateItemTemplate**Eval(显示数据)和Bind(双向绑定:不仅是需要展现,更需要把数据绑定到数据库中) ItemPlaceholderID:占位符,决定占位,把头部(之上)和尾部(之下)分隔开ItemTemplate:展示功能 自动生成的ListView需要调整的地方(1.生成的样式要提到style中,不要用内联的方式(2.ItemTemplate里面一半没必要用<asp

  • Ajax request response 乱码解决方法

    此功能已进入试用一周了,都没有问题,奇怪的是今天出现了问题?? 复制代码 代码如下: AjaxRequestObj.createEqStatusParameter=function() {     if (eqStatusArray.length < 1) {         return;     }     var paramNameArray = new Array();     var paramValueArray = new Array();     //取状态数组     for

  • 对django views中 request, response的常用操作详解

    request 获取post请求中的json数据 def hello(request): data = json.loads(request.body) ... json格式还有一些 非表单序列化 的格式,都可以从 request.body 中获取请求体中的数据,对于ajax请求可以使用 request.is_ajax() 来判断 根据请求的信息获取base url(有时候服务的域名比较多,还是需要动态的拼接一下url信息) # url http://wificdn.com:8888/wxpay

随机推荐