当前位置: 首页 > 编程日记 > 正文

防止盗链下载问题

经常在网络上四处载东西,有时碰到直接拷贝一个类似 http://193.100.100.56/TestWebSolution/WebApplication1/test.rar地址准备下载test.rar文件时,却被告知没有登录或者直接跳转到其他页面的情况,然后等登录后直接下载该文件。要实现上面情况,在.NET世界里是比较容易的。

1、  首先创建一个类库项目ClassLibrary1,实现如下(点这里查看):

using System;

using System.Web;    // 引用System.Web组件

namespace ClassLibrary1

{

public class MyHandler : IHttpHandler

{

public MyHandler()

{

}

#region IHttpHandler 成员

public void ProcessRequest(HttpContext context)

{

// 跳转到WebForm1.aspx,由WebForm1.aspx输出rar文件

HttpResponse response = context.Response;

response.Redirect("http://193.100.100.56/TestWebSolution/WebApplication1/WebForm1.aspx");

}

public bool IsReusable

{

get

{

// TODO:  添加 MyHandler.IsReusable getter 实现

return true;

}

}

#endregion

}

}


2、  创建测试用的Web项目WebApplication1。在配置文件Web.config文件节点里增加如下节点:

<httpHandlers>

<add verb="*" path="*.rar" type="ClassLibrary1.MyHandler, ClassLibrary1" />

httpHandlers>

3、  在WebForm1.aspx里增加一个文本为“下载”的Button,其Click事件如下(点这里查看):

FileInfo file = new System.IO.FileInfo(@"G:/WebCenter/TestWebSolution/WebApplication1/test.rar");

// FileInfo 类在 System.IO 命名空间里

Response.Clear();

Response.AddHeader("Content-Disposition", "filename=" + file.Name);

Response.AddHeader("Content-Length", file.Length.ToString());

string fileExtension = file.Extension;

// 根据文件后缀指定文件的Mime类型

switch (fileExtension)

{

case ".mp3":

Response.ContentType = "audio/mpeg3";

break;

case "mpeg":

Response.ContentType = "video/mpeg";

break;

case "jpg":

Response.ContentType = "image/jpeg";

break;

case "........等等":

Response.ContentType = "....";

break;

default:

Response.ContentType = "application/octet-stream";

break;

}

Response.WriteFile(file.FullName);

Response.End();


4、  最后一步就是在IIS里增加一个应用程序扩展。在“默认网站”->“属性”->“主目录”->“配置”。在弹出的“应用程序配置”窗口里按“添加”,在弹出的“添加/编辑应用程序扩展名映射”窗口里“可执行文件”选择C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_isapi.dll,在扩展名里输入“.rar”,然后确定即可。

5、  在IE里输入http://193.100.100.56/TestWebSolution/WebApplication1/test.rar,会立即跳转到http://193.100.100.56/TestWebSolution/WebApplication1/WebForm1.aspx,然后按WebForm1.aspx的“下载”按钮就可以下载test.rar了。

6、  当然,这里只按例子给个思路,完全可以再根据自身情况扩展。下面有几个参考的资源文章:

l         http://www.9seek.com/news/show.aspx?id=745&cid=12

l         http://www.9seek.com/news/show.aspx?id=521&cid=12

l         http://www.9seek.com/news/show.aspx?id=520&cid=12

l         http://msdn.microsoft.com/asp.net/using/building/web/default.aspx?pull=/library/en-us/dnaspp/html/URLRewriting.asp

相关文章:

中国人工智能市场破 50 亿!你还不了解 AI 云服务吗?

作者 | 马超责编 | 伍杏玲出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;从AI的发展趋势来看&#xff0c;最新的人工智能模型对于算力的要求往往较高&#xff0c;如谷歌的T5&#xff0c;其整个模型的参数数量达到了惊人的 110 亿&#xff0c;谷歌科学家更在T5的论…

Java中数据存储方式

2019独角兽企业重金招聘Python工程师标准>>> 1&#xff0e; 寄存器&#xff08;register&#xff09;。这是最快的存储区&#xff0c;因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限&#xff0c;所以寄存器由编译器根据需求进行分配。你…

Oracle与JCP执行委员会分享了他们的Java EE策略

Anil Gaur是Oracle集团负责Java EE和WebLogic Server的副总裁。他受邀在上一次的JCP执行委员会会议上发表了演讲&#xff0c;透露了有关Java EE未来发展的一些信息。他所传达的信息和Oracle之前的说法一致&#xff1a;企业编程正在发生变化&#xff0c;Oracle希望适应这种变化。…

5G:新基建的压舱石,如何为新基建按下“加速键”?

受访嘉宾 | 广和通 CEO 应凌鹏记者 | 邓晓娟2019 年&#xff0c;伴随着 5G 的浪潮&#xff0c;5G、AI、AIoT等新兴技术得到了全面的爆发&#xff0c;过去人们认为遥不可及的「高科技」&#xff0c;也逐渐走下“神坛”来进入大家的生活。5G 时代的万物互联&#xff0c;在本次疫情…

no argument specified with option /LIBPATH:错误的解决

作者&#xff1a;朱金灿来源&#xff1a;http://blog.csdn.net/clever101下午使用VS2005编译工程碰到一个链接错误&#xff1a;no argument specified with option "/LIBPATH:"。检查了链接库的文件路径&#xff0c;发现某个路径是非法的&#xff08;即不存在该文件路…

Animation 模拟纸盒的爆破

用简单的Animation动作模拟爆破的瞬间&#xff0c;仔细的调整各种参数效果会更像 原理&#xff1a;用定义好的纸张从onTouch中心点向四面八方散开&#xff0c;散开过程中&#xff0c;使用不用的速度、大小、方向、旋转角度、透明度&#xff08;这里纸张可以加上火焰&#xff0c…

代码恒久远,GitHub 永流传

作者 | 唐小引题图 | GitHub来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;这两天&#xff0c;在 GitHub 上积极贡献代码的许多开发者都收到了「Arctic Code Vault Contributor」的荣誉勋章的通知&#xff0c;并非常兴奋地晒起了朋友圈。因为这标志着自己在 GitHu…

不允许后退的方法

由于项目的需要不允许系统在提交之后&#xff0c;按IE的后退按钮进行再次提交。试试了一下在 .NET中通过如下语句 Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);就可以使页面的缓存失效&#xff0c;每次都需要获取新页面。 <script>history.for…

3个题目熟悉类和对象基础

1、按要求编写Java应用程序&#xff1a; &#xff08;1&#xff09;编写西游记人物类&#xff08;XiYouJiRenWu&#xff09;其中属性有&#xff1a;身高&#xff08;height&#xff09;&#xff0c;名字&#xff08;name&#xff09;&#xff0c;武器&#xff08;weapon&#x…

按下回车表示确定提交

<body οnkeydοwn"if (event.keyCode13) {document.all.button2.click()}"> 下面的五种方法都可以帮你解决这种问题1.<script languagejavascript>function document.onkeydown(){ if (event.keyCode 13) { if (event.srcElement docum…

A股暴跌,户均亏2万!刚写好的辞职信又撕了……

仅用1天&#xff0c;A股市值单日蒸发达到3.5万亿&#xff0c;人均亏了超2万&#xff01;“芯片龙头”企业中芯国际正式登陆科创板&#xff0c;使得半导体板块整体跌幅较小。中芯国际上市首日涨幅超200%&#xff0c;收报82.92元&#xff0c;总市值达6137.57亿元&#xff0c;成为…

DataList在无数据记录时显示类似GridView空模板(EmptyDataTemplate)

在FooterTemplate加个Label并根据repeater.Items.Count判断是否有记录。HTML代码&#xff1a; <FooterTemplate> <asp:Label ID"lblEmpty" Text"No data recprd exist !" runat"server" Visible<%#bool.Parse((DataList1.I…

QButtonGroup 的使用

1、3以后尽量手写&#xff0c;因为没有现在的控件了 2、 1 // lyy : 2016/8/26 12:17:41 说明:存放radioButton2 QButtonGroup *buttonGroup;3 // lyy : 2016/8/26 11:11:55 说明:radioButton4 buttonGroup new QButtonGroup();5 buttonGroup->addButt…

机器学习算法易受攻击?阿里“安全基建”这样应对AI的不安全

出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;数字基建的浪潮之下&#xff0c;诸多行业领域都在加速融合5G、大数据中心、AI等新技术&#xff0c;向数字化转型。近日&#xff0c;多位全国政协委员、院士和安全行业专家提出&#xff0c;应尽快出台安全基建国家标准&…

不可以输入中文

function checkCH() {var strtxtPwd.value;var c /[/u4e00-/u9fa5]/;if(c.test(str)){alert("不能输入中文。");return false;}return true; }

tomcat虚拟路径的几种配置方法

tomcat配置虚拟路径的4种方法在tomcat中&#xff0c;webapp文件夹默认为web应用的根目录。1.在tomcat\conf\server.xml中找到 host标签&#xff0c;在host标签中增加新的元素<Context/>并设置 Context的元素&#xff0c;其中path元素所设置的值就是在浏览器中所要访问的虚…

hi35183e增加exfat文件系统的支持

64G-128G的tf卡文件系统格式为exfat&#xff0c;而hi3518e默认只支持fat32格式的tf卡。为了挂载64G以上的tf卡&#xff0c;只能将sd卡先格式化成FAT32。鉴于exfat性能比FAT32强&#xff0c;因此考虑移植exfat驱动到海思3518e平台,这样就不用强制格式化tf卡。 拷贝驱动源码到内核…

XML的简单读取与写入

作者&#xff1a;网际浪子专栏&#xff08;曾用名littlehb&#xff09; http://blog.csdn.net/littlehb/我用的是一种很笨的方法&#xff0c;但可以帮助初学者了解访问XML节点的过程。已知有一个XML文件&#xff08;bookstore.xml&#xff09;如下&#xff1a; <?xml ver…

美国 AI 博士一针见血:Python 这样学最容易成为高手!

我见过市面上很多的 Python 讲解教程和书籍&#xff0c;他们大都这样讲 Python 的&#xff1a;先从 Python 的发展历史开始&#xff0c;介绍 Python 的基本语法规则&#xff0c;Python 的 list, dict, tuple 等数据结构&#xff0c;然后再介绍字符串处理和正则表达式&#xff0…

区域链实践第一步——区域链测试环境搭建

区域链光速发展&#xff0c;在许多人的期许下&#xff0c;已经成为了互联网下一个革新点。区块链会成就的未来价值互联网&#xff0c;是新时代的基石。 IBM中国研究院开发的超能云&#xff08;SuperVessel&#xff09;平台提供了给区块链爱好者、开发者的区块链开发测试环境。通…

DataGrid的几个小技巧

作者&#xff1a;网际浪子专栏&#xff08;曾用名littlehb&#xff09; http://blog.csdn.net/littlehb/方法一:使用模版列 我们在绑定好数据的DataGrid增加一个模版列,在列中放置一个按钮<asp:TemplateColumn><ItemTemplate><asp:Button id"btnDelete&q…

32岁程序员面试被拒:比又穷又忙更可怕的,是2020年你还不懂...

在大学阶段&#xff0c;大家都学过概率论、线性代数和微积分的课程&#xff0c;但是为什么在面对机器学习中的数学问题时&#xff0c;却有一种天书的既视感&#xff1f;第一&#xff0c;大学课程中的知识点并没有完全覆盖机器学习领域所需。 回想一下大学概率统计课程内容的内容…

DHCP tftp PXE实现Ghost网络克隆

概述&#xff1a;加ghost参数&#xff0c;实现客户端只需连接网线&#xff0c;在无光驱、软驱的情况下&#xff0c;且无需其他配置&#xff0c;完成网络克隆。所要用到的软件&#xff1a;1、ghost 8.2 企业版中的Ghost Boot Wizard&#xff08;其中的ghost.exe程序可以用ghost1…

PHP文件上传和文件操作案例

<?php /**文件配置变量$dirname是目录名称*/ session_start(); $dirname upload; $fileClass new fileClass($dirname); $fileClass -> fileCMM();/*文件重命名操作*/ $fileClass -> fileDelete();/*文件删除操作*/ ?> <!DOCTYPE html> <html> <…

将模式对话框的返回值回送(PostBack)到服务端

作者&#xff1a;张老三的专栏 http://blog.csdn.net/billy_zh/在一些应用中&#xff0c;希望将模式对话框的值回送(PostBack)到服务端&#xff0c;也就是执行一个服务端操作&#xff0c;从而刷新页面。举个例子&#xff1a;比方说新建一个订单&#xff0c;此时希望能在模式…

android zip解压缩(含有子目录)

为什么80%的码农都做不了架构师&#xff1f;>>> note: 如果目录中含有中文名称&#xff0c; 要用substr new String(substr.getBytes("8859_1"), "GB2312");这样的语句转换&#xff0c;否则为乱码 /*** 解压缩功能.* 将ZIP_FILENAME文件解压…

用Python实现抖音上的“人像动漫化”特效,原来这么简单

作者 | 黄伟呢来源 | 数据分析与统计学之美前几天&#xff0c;女友拉着我和她玩儿抖音&#xff0c;就是这个人像动漫化的操作&#xff0c;顿时觉得很好玩儿。我心想&#xff1a;Python 既然这么强大&#xff0c;是不是也可以使用 Python 程序来实现这样一个操作呢&#xff1f;哈…

easyui在IE中: SCRIPT1003: 缺少 ':'

转载于:https://www.cnblogs.com/FredLee/p/5894614.html

NumPy学的还不错?来试试这20题

来源 | 早起Python&#xff08;ID: zaoqi-python&#xff09;又到了NumPy进阶修炼专题。NumPy大家应该不陌生了&#xff0c;看了太多的原理讲解之后&#xff0c;用刷题来学习是最有效的方法&#xff0c;本文将带来20个NumPy经典问题&#xff0c;附赠20段实用代码&#xff0c;拿…

tomcat报 Context [] startup failed due toprevious errors

今天同事在实施项目中,遇到一个问题,就是项目布到tomcat服务器上了,却总是找不到访问路径.tomcat报 Context [] startup failed due toprevious errors 当时就觉的很郁闷,项目是本机测试完整打包的.按以前的项目实施也很少出现这样的问题.在网上搜索以下解决方案: ------解决方…