• 判断Request.UrlReferrer对火狐无效??


    我现在有一个页面default.aspx,我想做一个功能就是如果是通过window.open打开这个页面,就Redirect到另一个页面去,如果是其它页面比如(download.html)通过src的方式链接这个地址,就输出一个图片。我的思路是通过判断来路即(Request.UrlReferrer)来实现。代码如下,我测试了在IE下是可行的。但是在火狐下的问题是,如果我通过新建标签-输入default.aspx,UrlReferer为空,但是如果通过window.open的方式打开的话,火狐仍然能识别urlreferrer.
    也就是说,我们通常所说的通过window.open方式是没有来路的,但是这个说法在火狐面前是无效的,火狐仍然能识别来路。
    我的火狐版本是3.5.5。火狐这一强大的功能困扰了我,我现在不要它这么强大。如果是我的思路有问题,请高手赐教。如果有其它程序的办法让火狐在window.open下不识别来路,请赐教。声明:我没有安装refcontrol这个识别盗链的控件。
    Default.aspx

     public partial class _Default : System.Web.UI.Page
        {
            
    protected void Page_Load(object sender, EventArgs e)
            {
                
    string imagename = "";
                
    string strhz = "";//图片后缀
                string longimagename = Request.Path;
                
    string[] a = longimagename.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
                imagename 
    = a[a.Length-2].ToString();//后面还有个/default.aspx
                strhz = imagename.Split(new char[] { '.' })[1].ToLower();
                
    string url = System.Configuration.ConfigurationManager.AppSettings[imagename + ".url"].ToString();//中间的自动refresh的页面文件名  
                if (Request.UrlReferrer != null)
                {
                    MemoryStream ms 
    = new MemoryStream();
                    System.Drawing.Image img 
    = System.Drawing.Image.FromFile(Request.PhysicalPath.ToLower().Replace("default.aspx",imagename));
                   
    // System.Drawing.Image img = System.Drawing.Image.FromFile(imagename);
                    if (strhz == "gif")
                    {
                        img.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                    }
                    
    else if (strhz == "jpeg" || strhz == "jpg")
                    {
                        img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    }
                    
    else
                    {
                        img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
                    }
                    img.Dispose();
                    Response.ClearContent();
                    Response.ContentType 
    = "image/" + strhz;
                    Response.BinaryWrite(ms.ToArray());
                }
                
    else
                {
                    Response.Redirect(url);
                }
            }
        }

    Download.html(即用来测试浏览器是否能通过window.open识别来路的静态页面):

    代码
     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml" >
     3 <head>
     4  <title></title>
     5 </head>
     6 <body>
     7 <div>
     8 <!--IE下不能取得来路,但是火狐正常取得-->
     9 <img src=taoke5.jpg onclick="window.open('http://192.168.1.254/moban.gif/default.aspx');" />
    10 </div>
    11 </body>
    12 </html>


     

  • 相关阅读:
    01.html5+phonegap跨平台移动应用开发
    10个CSS简写/优化技巧
    JS高级学习历程-17
    JS高级学习历程-16
    算法详解之Tarjan
    分层图详解
    洛谷 题解 P1196 【[NOI2002]银河英雄传说】
    洛谷 题解 P1220 【关路灯 】
    洛谷 题解 P1352 【没有上司的舞会】
    二维前缀和详解
  • 原文地址:https://www.cnblogs.com/showker/p/1623476.html
Copyright © 2020-2023  润新知