zoukankan      html  css  js  c++  java
  • 微信公众号复制的图片可以正常显示的办法

    通过浏览多方文章,找到了一个 非常好用但是也有很大的坑的办法:

    在页面中加meta:

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

    亲测遇到的坑:

    首先,微信复制的图片,自己网站作为引用,在pc端任何地方都显示:"本图片来自微信公众号,未经许可,不能引用..."之类的字样在安卓ap端其实是可以正常显示的,在ios的app端显示为空白

    当加了该meta之后,在pc所有地方都可以正常显示了,但是ios的app端依然显示为空白......所以使用该方法如果仅限于在pc端的话,,没毛病.

    这里了解一下referer是什么:

    referrer 属性可返回载入当前文档的文档的 URL。

     

    如果当前文档不是通过超级链接访问的,则为 null。这个属性允许客户端 JavaScript 访问 HTTP 引用头部。

     

    referer metedata 参数可以设置为以下几种类型的值:

    never

    always

    origin

    default

     

    如果在文档中插入 meta 标签,并且 name 属性的值为 referer,浏览器客户端将按照如下步骤处理这个标签:

    1.如果 meta 标签中没有 content 属性,则终止下面所有操作

    2.content 的值复制给 referrer-policy ,并转换为小写

    3.检查 content 的值是否为上面 list 中的一个,如果不是,则将值置为 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


    此段摘自:http://www.freebuf.com/news/57497.html


    反盗链的原理


    官方输出图片的时候,判断了来源(Referer),就是从哪个网站访问这个图片,如果是你的网站去加载这个图片,那么Referer就是:你的网站地址;;你网站地址,肯定没在官方的白名单内,所以就看不到图片了。

    不发送Referer,也就是没有来源。那么官方那边,就认为是从浏览器直接访问的,所以就能加载正常的图片了。

  • 相关阅读:
    sql 存储过程 in 的两种写法
    C# 开发Chrome内核浏览器(WebKit.net)
    IE6、IE7、IE8、Firefox兼容性
    360浏览器兼容模式 不能$.post (不是a 连接 onclick的问题!!)
    jquery树形表格实现方法
    C#递归累计到父行
    树形结构 DropDownList
    ASP.NET 防止重复提交提示层
    JavaScriptSerializer 时间格式化
    去标签获取网页内容
  • 原文地址:https://www.cnblogs.com/beileixinqing/p/7485893.html
Copyright © 2011-2022 走看看