<img src="http://www.vclogos.co.uk/logo.php?subid=d18f655c3fc147&imgid=11542">
当我创建notepad html页面时,上面的标签显示图像,但是当我把它放在asp.net上时,它不会在浏览器上显示图像。
答案 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&imgid=11542
是指向空白页面的链接......
http://www.vclogos.co.uk/logo.php?subid=d18f655c3fc147&imgid=11542
是图像的链接。
您正在发送已编码的网址。始终使用已解码的URL(例如php中的urlencode或aspx中的HttpServerUtility.UrlEncode Method (String))