Html img标签没有在asp.net中显示来自url的图片

时间:2016-05-19 10:14:43

标签: c#

<img src="http://www.vclogos.co.uk/logo.php?subid=d18f655c3fc147&amp;imgid=11542">

当我创建notepad html页面时,上面的标签显示图像,但是当我把它放在asp.net上时,它不会在浏览器上显示图像。

2 个答案:

答案 0 :(得分:1)

它不起作用,因为相关URL后面的服务器会检查HTTP referer,如果设置的引用与预期的不匹配,则返回空页。

引用者告诉“vclogos”服务器从哪个网站加载图像的请求来自。

这可能是来自页面的安全措施,因为他们不希望人们做你刚刚尝试做的事情:热链接他们的图片。

问题是,当您从“记事本html页面”进行测试时,不会发送任何引用程序。这也是出于安全原因,但是从您的浏览器方面来说:发送file:///C:/Users/JohnDoe/Desktop/MyPrivateFiles/page.html作为引用网址会泄露您计算机上的私人信息。这就是为什么没有发送的原因。因此,图像被加载 - 就像您将URL复制并粘贴到浏览器的地址栏中一样(然后也不会发送任何引用)。

但是,当您将其包含在Internet上的网站上时,您的页面URL将作为referer发送。 “vclogos”网站现在似乎检查了这个值,如果发送的引用不是他们自己的引用,则不返回任何内容(我猜他们只接受http://www.vclogos.co.uk/something,所以只有当它包含在他们自己的网站,而不是你自己的网站。

长话短说,您只是无法从此网址直接在您的网站中加载此图片。

唯一的方法是在ASP.NET中使用服务器端的 来获取实际图像,然后将其作为资源提供给客户端,从浏览器的角度来看view,来自你的服务器(谁先从“vclogos”获得它,但没有发送引用者)。问题是,如果您的服务器获取图像数据,您可以控制您发送的标头。 (与您的网站不同,一旦在浏览器中加载,该网站没有此控制权 - 浏览器会将您的网页网址作为引用发送,并且您无法做任何事情。)

答案 1 :(得分:0)

只是一个细节:

http://www.vclogos.co.uk/logo.php?subid=d18f655c3fc147&amp;imgid=11542

是指向空白页面的链接......

http://www.vclogos.co.uk/logo.php?subid=d18f655c3fc147&imgid=11542

是图像的链接。

您正在发送已编码的网址。始终使用已解码的URL(例如php中的urlencode或aspx中的HttpServerUtility.UrlEncode Method (String)