2014-04-16 63 views
1

我有网站在ASP.net MVC3和它托管的图像。但其他网站正在使用我的图片链接并窃取我的带宽。有没有办法使用http标头检查每个请求并发送有关网站名称的不同响应?限制访问我在其他网站上的图像

请给我一个文章或帮助我。

感谢和问候

+0

您需要限制匿名用户对文件/文件夹的访问,您需要在配置文件中设置配置。看看[这篇文章](http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web -config.aspx“在web.config中设置特定页面或文件夹的授权规则”)。 –

回答

1

您可以通过而不是在您的服务器上发布其实际路径来阻止访问这些图片。 阅读here

这是您的< img>标签怎么会是这样的:

<img src="data:image/png;base64,iVBORw0K....." id="pictureFrame"/> 

这段代码会做该图像的工作在C#

private void encryptPhoto(string imagePath) 
{ 
    pictureFrame.Src = @"data:image/gif;base64," + EncodePhoto(Server.MapPath(imagePath)); 
} 
private string EncodePhoto(string fileName) 
{ 
     return Convert.ToBase64String(File.ReadAllBytes(fileName)); 
} 
+0

它,好戏。我的网站是一个问候网站,人们将这些链接发送到像Facebook这样的社交网站,标记等,所以我只想限制很少的网站将他们的图像网址发送到社交网络,并将它们链接到他们自己的网站。这就是为什么我不想访问这些网站。 –

+0

如果我能够给你答案,请将其标记为答案。 – Basilf

0

不,我知道的,但你可以做的是存储的实际图像文件名列表在一些秘密的文本文件,并使用PHP或类似的实际显示他们的东西看他们。然后,您可以更改文件系统和文本文件中的图像名称,以便您的网站看起来不错,但是您可以使旧图像文件指向新图像,并显示“此图像已从[MYDOMAIN]移除”应该能够遏制窃取很快。

0

你可以忽略使用MVC路由的图像。按照您的要求定义路线模式。

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("foldername/{filename}.html"); 
}