https访问http加载不出图片_前端解决第三方图片防盗链的办法

26200f8ecce45d09d4f4bc5a8f4572c5.png

作者:biaochenxuying

转发链接:https://github.com/biaochenxuying/blog/issues/31

问题

笔者网站的图片都是上传到第三方网站上的,比如 简书、掘金、七牛云上的,但是最近简书和掘金都开启了 防盗链,防止其他网站访问他们网站上的图片了,导致笔者的网站存在他们网站上的图片全挂了。

具体问题,就是 html 中通过 img 标签引入一个第三方的图片地址,报 403 。但是这个图片地址直接复制出来在地址栏打开,却是看得到的。

原因

官方输出图片的时候,判断了来源 Referer ,就是从哪个网站访问这个图片,如果是你的网站去加载这个图片,那么 Referer 就是:你的网站地址;

如果我们的网站地址不在官方的白名单内,所以就看不到图片了。

我们做这个跳板的关键:不发送 Referer,也就是没有来源。那么官方那边,就认为是从浏览器直接访问的,所以就能加载正常的图片了。

referrer

在某些情况下,出于一些原因,网站想要控制页面发送给 server 的 referrer 信息的情况下,可以使用这一 referer metadata 参数。

参数

referer 的 metedata 属性可设置 content 属性值为以下集合:

  • never
  • always
  • origin

结果

  • 如果 referer-policy 的值为 never:删除 http head 中的 referer;
  • 如果 referer-policy 的值为 default:如果当前页面使用的是 https 协议,而正要加载资源使用的是普通的 http 协议,则将 http header 中额 referer 置为空;
  • 如果 referer-policy 的值 origin:只发送 origin 部分;
  • 如果 referer-policy 的值为 always:不改变 http header 中的 referer 的值;

举例

如果页面中包含了如下 meta 标签,所有从当前页面中发起的请求将不会携带 referer:

如果页面中包含了如下 meta 标签,则从当前页面中发起的 http 请求将只携带 origin 部分:

解决方案

初步方案

  • 在 标签里加 meta,referrer 的 content 设置为 nerver

这样存在第三方网站上的图片,在你的网站上就可以访问了。

但是还有一个问题,就是如果你的网站需要发送你的网站地址的,那上面的的设置就不行了,比如:用到了百度统计。

那上面的设置会导致百度统计的代码加载不了,因为它需要发送你的网站地址给百度统计。

既要不发送 你的网站地址,又要发送你的网站地址,那么怎么办呢 ?

257fdc3741cacc68e7504529de37a3ae.png

最终的解决方案

  • 先在 html 上设置 referrer 为 always

这样之后,首屏加载的时候,加载了百度统计的代码了,能正常统计访客数据了。

  • 不需要网站地址的时候,再把 referrer 设置为 nerver

加个延时 setTimeout 再把 referrer 的 content 值设置为 nerver 。或者 在有图片的地方再把 referrer 的 content 值设置为 nerver 。

const referrer  = document.getElementById("referrer");referrer.setAttribute("content", "never")

这样就能解决第三方图片防盗链,又能用到百度统计了。

最后

希望:大家不要恶意盗用、滥用第三方的 CDN 资源行为。

比如:掘金 CDN 本是一件公益性质的社区服务,为便大家在自己的技术博客中使用掘金 CDN 的图片,并没有开启防盗链。

但是就是因为某些人恶意盗用、滥用第三方的 CDN 资源,所以掘金社区不得不开启防盗链来减少损失和规避风险 https://juejin.im/post/5cefb6a3f265da1b95703b9d

作者:biaochenxuying

转发链接:https://github.com/biaochenxuying/blog/issues/31

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java spring boot 注解验证_如何理解Java原生注解和Spring 各种注解?

作者:digdeep.cnblogs.com/digdeep/p/4525567.html导引Spring中的注解大概可以分为两大类:spring的bean容器相关的注解,或者说bean工厂相关的注解;springmvc相关的注解。spring的bean容器相关的注解有:Required&#x…

数据驱动的未来城市八大趋势

来源:微信公众号腾讯研究院 趋势一 更可持续 城市的发展要为整个人类文明的永续传承和为后人能享受到更高质量的生活为目标。一个更加智慧的城市,势必具有着更加可持续发展的能力。新科技为城市的核心系统的设施提供了更为智能、高效率的调配方案&#x…

浪潮服务器bios怎么找回密码,服务器BIOS密码丢失解决方法

先升级iBMC,再升级bios,可以将bios密码重置。此案例以RH2288为例:1、登录到iBMC web界面,点击系统设置里的固件升级,将BMC升级包image.hpm上传后,点击升级,因为BMC主备两个镜像,需要…

现在早上起来都还是感觉颈椎有些通

不会得了颈椎病吧 转载于:https://www.cnblogs.com/bkchengzheng/p/6228103.html

惠普打印机136w硒鼓芯片怎么清零_关于惠普彩激升级后无法识别硒鼓的处理方案...

近日来收到不少用户反馈自己的惠普彩色激光机升级固件后无法识别硒鼓了,但是以前都能识别,硒鼓是兼容的。这是因为惠普的最新发布的固件版本20201021增加了验证机制,识别到硒鼓是非原装的时候直接锁机,拒绝使用,这也是…

看了中国与别国的科研差距后,究竟什么才是真正的科研精神?

来源:募格学术 目前,中国的科研环境越来越好,单就硬件上来讲,与欧美发达国家没有很大差别。2014年,中国研发投入13400亿元,占GPD2.1%,这个比例超过了欧盟。然而,引人深思的是中国缺席…

删除计算机文件的几种方法,电脑删除不了文件怎么办?教你几种好的处理方法,一学就会...

现在是电脑的时代,我们每天都要在计算机上处理大量的文件。但是有的时候,电脑上会出现删不了文件的情况。出现这种情况可能是下面的几种原因。1.首先检查与文件相关的软件是否正常运行,并且尝试关闭它。如果你正在编辑或查看office文档&#…

numpy 转置_Numpy基础:数组转置和轴对换

转置(transpose)是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作)。数组不仅有transpose方法,还有一个特殊的T属性。In[70]:arrnp.arange(15).reshape((3,5))In[71]:arrOut[71]: array(…

Jmeter学习

网址: http://www.ltesting.net/ceshi/open/kyxncsgj/jmeter/ http://www.cnblogs.com/TankXiao/p/4059378.html?utm_sourcetuicool http://blog.csdn.net/chenleixing/article/details/43418185/ http://www.blogjava.net/lijun_li/archive/2014/06/26/296453.htm…

word2016 图片去底灰_看来看去,还是高级灰最耐看,喜欢现代简约风的你,选它准不会错...

经常看到有人问:不想要大白墙,给家里装点什么颜色好?这个问题其实没有固定答案,毕竟对于色彩的感受,每个人都不一样。没有固定答案不代表没有选择,好看又百搭的色彩有很多,但是能做到经典与时尚…

惊人的预测——来自2019麦肯锡报告《中国与世界》完整版

来源:麦肯锡全球研究院 自从中国开始建立与世界各国的经济往来、拥抱市场机制,并积极接纳全球最佳实践以后, 中国经济便迈入了腾飞阶段。如今,中国已凭借其庞大的经济体量跻身全球大国之列。中国在2013年跃居全球第一大商品贸易国…

css线加点的进度,纯CSS实现的交互式进度条(点击带进度填充动画)

CSS语言:CSSSCSS确定.bar {display: flex;flex-direction: row-reverse;margin: auto auto 0;width: 300px;max-width: calc(100% - 30px);}.bar-input {opacity: 0;pointer-events: none;position: absolute;top: -9999px;left: -9999px;}.bar-input:checked ~ .ba…

python创建长度为n的数组_在Python中建立N维数组并赋初值

在Python中,由于不像C/Java这样的语言可以方便的用a[i][j]0的方式,建立二维数组并赋初值,所以需要一个相对巧妙的方法。 可以用列表解析的方式,eg: >>> mat[[0 for i in range(5)] for j in range(5)]>>>mat [[…

匹夫细说C#:庖丁解牛迭代器,那些藏在幕后的秘密

匹夫细说C#:庖丁解牛迭代器,那些藏在幕后的秘密c#语言规范阅读目录0x00 前言0x01 你好,迭代器0x02 原来是状态机呀0x03 状态管理0x04 总结回到目录0x00 前言在匹夫的上一篇文章《匹夫细说C#:不是“栈类型”的值类型,从…

贴花纸怎么贴_陶瓷贴花纸DIY怎么做?

A:1 释义 编辑本段词目:陶瓷花纸拼音:to c huā zhǐ英文:ceramic stained paper2 什么是陶瓷花纸? 编辑本段陶瓷花纸也叫做陶瓷粘花纸。陶瓷粘花纸是指在陶瓷(或瓷坯)表面贴上印刷好的陶瓷专用花纸…

法国公布“人机协同”项目第二批研究计划

来源:法国《航宇防务》/图片来自互联网出处:国防科技要闻近日,法国公布了“人机协同”(MMT)项目第二批研究计划。MMT项目由法国武器装备总署(DGA)管理,于2018年3月启动,是…

xp打印服务器win10的系统连接不上,Win10系统访问WinXP系统共享打印机却连接不了的解决方法...

在今天的Win10系统的使用教程中,我们将来学习的是Win10系统访问WinXP系统共享打印机却连接不了的问题。不过,小编得事先说一下,Win10系统是可以直接连接WinXP系统共享打印机的,只是个别用户由于一些原因而出现这个状况&#xff0c…

c++ map初始化同时赋值_Golang入门教程——map篇

点击上方蓝字,和我一起学技术。今天是golang专题的第7篇文章,我们来聊聊golang当中map的用法。map这个数据结构我们经常使用,存储的是key-value的键值对。在C/java当中叫做map,在Python中叫做dict。这些数据结构的名称虽然不尽相同…

ABP文档翻译--值对象

本人是ABP初学者,在看英文文档和tkb至简 的ABP框架理论研究总结(典藏版)时,发现大神tkb至简中少了对Value Objects的翻译,看文档是新的,大神没时间把,小弟给补充上。   介绍 值对象基类 最佳实践 介绍 “用于描述领…

c++ so 反射_c++如何实现反射功能?

问题主 和 vczh 可以看下我这样弄,是否符合要求?定义类的时候稍微傻一点,但是他既不要求pod, 也没有什么侵入式的基类要求。甚至还允许你把成员定义成private的。连C11都不需要。struct test_type0{DEF_FIELD_BEGIN(test_type0)pr…