Html页面的标签图片没法显示

若是你也曾复制过一些相似腾讯、百度等各大网站的文章,你会发现复制下来发表以后常常出现图片没法显示,这是什么缘由呢?javascript

例如:

<body>
    <img src="http://upload.techweb.com.cn/2017/0106/1483690985396.jpg" />
</body>

解决方案

使用Referer Meta标签控制referer,在H5 的 header加入metahtml

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

 便可修复!html5

HTTP_REFERER介绍

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,通常会带上Referer,告诉服务器我是从哪一个页面连接过来的,服务器基此能够得到一些信息用于处理。 
 java

简介web

      简而言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,通常会带上Referer,告诉服务器我是从哪一个页面连接过来的,一般被网站用来统计用户来源,是从搜索页面来的,仍是从其余网站连接过来,或是从书签等访问,以便网站合理定位,服务器藉此能够得到一些信息用于处理。好比从我主页上连接到一个朋友那里,他的服务器就可以从HTTP Referer中统计出天天有多少用户点击我主页上的连接访问他的网站。 


      Referer有时也被用做防盗链, 即下载时判断来源地址是否是在网站域名以内, 不然就不能下载或显示,不少网站,如天涯就是经过Referer页面来判断用户是否可以下载图片。 


      固然,对于某些恶意用户,也可能伪造Referer来得到某些权限,在设计网站时要考虑到这个问题。 


      Referer 还可用作电子商务网站的安全,在提交信用卡等重要信息的页面用referer来判断上一页是否是本身的网站,若是不是,多是黑客用本身写的一个表单,来提交,为了能跳过你上一页里的javascript的验证等目的。 


      可是,注意不要把Rerferer用在身份验证或者其余很是重要的检查上,由于Rerferer很是容易在客户端被改变。 
 浏览器

1、去除http头部的Referer信息,防止重要网址被浏览器“偷偷的泄漏”安全

      有时候咱们须要在点击连接时候去除http头部的referer属性,好比在网站后台有连接到外部网站的地方,若不去除的话很容易暴漏咱们的后台地址!服务器

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

下面几种状况下,能够控制浏览器是否发送referer:url

  1. 当网站使用refresh字段进行跳转的时候,大多数浏览器不发送referer; 
     
  2. 从用户从一个HTTPS的网站点击连接到另外一个HTTP的网站时,不发送referer; 
     
  3. html5中,a标签的rel = “noreferrer”, 可让浏览器不发送referer; 
     
  4. 使用Data URI scheme连接的,浏览器也不发送referer; 
     
  5. 使用Content Security Policy, 也可让浏览器不发送referer; 
     
  6. 在html头部中使用meta标签来控制不让浏览器发送referer; 
     
  7. 用户手输入网址或是从收藏夹、书签中访问。 
     

技术细节

referer 的 metedata 参数能够设置为如下几种类型的值:

  1. never 
     
  2. always 
     
  3. origin 
     
  4. default

    浏览器后续发起 http 请求的时候,会按照 content 的值,作出以下反应(下面 referer-policy 的值即 meta 标签中 content 的值):

1.若是 referer-policy 的值为never:删除 http head 中的 referer;

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

3.若是 referer-policy 的值为 origin:只发送 origin 部分;

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

例子

一、若是页面中包含了以下 meta 标签,全部从当前页面中发起的请求将不会携带 referer:

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

 

二、若是页面中包含了以下 meta 标签,则从当前页面中发起的 http请求将只携带 origin 部分(注:根据原文中的语境,我理解这里的 origin 是包含了 schema 和 hostname 的部分 url,不包含 path 等后面的其余 url 部分),而不是完整的 URL :

<meta name="referrer" content="origin">

 

注意:在使用本文中所述的 meta 标签的时候,浏览器原有的 referer 策略将被打破,好比从 http 协议的页面跳转到 https 的页面的时候,若是设置了适当的值,也会携带 referer。

相关文章
相关标签/搜索