我现在有一个页面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);
}
}
}
{
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>
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>
标签:
火狐 来路
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~