none
这样可以防止盗链吗? RRS feed

  • 问题

  • 参考了论坛里几位大师的意见,在项目中添加了ashx文件,代码如下:
     [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        public class Handler1 : IHttpHandler
        {

            public void ProcessRequest(HttpContext context)
            {
                string Filepath = context.Server.MapPath(context.Request.FilePath);

                if (context.Request.UrlReferrer.Host.Contains("cmltl.cn"))
                {
                    context.Response.ContentType = context.Request.ContentType;
                    context.Response.WriteFile(Filepath);
                }
            }

            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }

    2010年2月27日 6:50

答案

  • 一定程度上可以,但这种方法不可靠,因为客户端可能根本就不包含referrer。很多人的做法是,如果referrer为空,也允许下载,这是最简单又最大限度兼容的做法。
    Microsoft ASP.NET MVP
    2010年2月28日 11:12
    版主