链接其他网站图片无法显示...

最近在使用别人网站图片时,出现图片在自己的网页上无法显示,但通过浏览器地址栏却能打开

1
<img src="http://images2015.cnblogs.com/blog/138012/201610/138012-20161016191639092-2000037796.png" alt="暑假5折">

通过chrome控制台发现是403错误


You do not have permission to get URL ‘/blog/138012/201610/138012-20161016191639092-2000037796.png’ from this server.

解决方法:
使用Referer Meta标签控制referer

1
<meta name="referrer" content="never">

HTTP referer

当访客访问网页时,HTTP来源地址 (referer 或 referring page) 是前一个网页的URL。如果是图片的话,通常指的就是图片所在的网页。在网页浏览器送往网页服务器的时候,HTTP来源地址就被包含在HTTP请求方法中。

许多网站会将引用地址记录以便追踪用户的动态或进行统计,大部分分析软件也都会处理这个信息。但因引用地址信息可能会带来隐私权问题,不少网页浏览器允许用户设置不要提交这个信息,有些代理服务器和防火墙也会将引用地址信息过滤掉,以避免外部获知非公开的网络地址。缺少引用地址信息有可能会造成某些使用问题:某些服务器会因为缺少正确的引用地址信息而进行阻挡,以避免未经授权的图片引用(图像防盗链)或是其他对服务器有影响的行为。针对这样的阻挡,有些软件还提供了针对特定网站提交假来源地址的功能(反防盗链)。

referer是由客户端的浏览器发送到服务器上的,且在客户端可以通过document.refererrer 来获取,也就是说referer的发送实际上是一个浏览器行为,发送与否的决定权实在浏览器手里。 

其中

1. a标签的rel = “noreferrer”, 可以让浏览器不发送referer; 
2. 从用户从一个HTTPS的网站点击链接到另一个HTTP的网站时,不发送referer; 
3. 在html头部中使用meta标签来控制不让浏览器发送referer; 
4. 用户手输入网址或是从收藏夹、书签中访问,不发送referer;

meta referrer content属性值

default --- 如果当前页面使用的是 https 协议,而正要加载的资源使用的是普通的 http 协议,
            则将 http header 中的 referer 置为空;

never --- 删除 http head 中的 referer;

always --- 不改变http header 中的 referer 的值,注意:这种情况下,如果当前页面使用了 https 协议,
            而要加载的资源使用的是 http 协议,加载资源的请求头中也会携带 referer。

origin --- 只发送 origin 部分(不包含 path 等后面的其他 url 部分);
0%