JavaScript 防盗链的原理以及破解方法


Posted in Javascript onDecember 29, 2020

HTTP Referer是header的一部分, 当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器藉此可以获得一些信息用于处理。通过该头域的值,我们可以检测到访问目标资源的源地址

背景

前段日子 在自学做项目的时候发现 明明在项目中引用了线上存在的图片 但是在自己的项目中却怎么也显示出来

查阅资料后发现是这些第三方网站设置了防盗链

破解防盗链

先说说防盗链的原理,http 协议中,如果从一个网页跳到另一个网页,http 头字段里面会带个 Referer。

这里的Referer是由于历史原因导致了拼写错误 后来也就一直沿用。

图片服务器通过检测 Referer 是否来自规定域名,来进行防盗链。

如果盗用网站是 https 的 protocol,而图片链接是 http 的话,

则从 https 向 http 发起的请求会因为安全性的规定,而不带 referer,从而实现防盗链的绕过。

官方输出图片的时候,判断了来源(Referer),就是从哪个网站访问这个图片,

如果是你的网站去加载这个图片,那么Referer就是:你的网站地址;

你网站地址,肯定没在官方的白名单内,所以就看不到图片了。

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

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

比如在掘金上 查看我的一篇文章中一张图片的Request Headers 就可以看到Referer

JavaScript 防盗链的原理以及破解方法

以上就是JavaScript 防盗链的原理以及破解方法的详细内容,更多关于JavaScript 防盗链的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
[JS源码]超长文章自动分页(客户端版)
Jan 09 Javascript
在jQuery中 关于json空对象筛选替换
Apr 15 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
Dec 02 Javascript
JavaScript常用字符串与数组扩展函数小结
Apr 24 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
Nov 10 Javascript
Javascript实现时间倒计时效果
Jul 15 Javascript
JavaScript实现QQ列表展开收缩扩展功能
Oct 30 Javascript
node简单实现一个更改头像功能的示例
Dec 29 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
Jun 08 Javascript
angular 实时监听input框value值的变化触发函数方法
Aug 31 Javascript
小程序:授权、登录、session_key、unionId的详解
May 15 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
May 26 Javascript
vue3+typeScript穿梭框的实现示例
Dec 29 #Vue.js
Vue.extend 登录注册模态框的实现
Dec 29 #Vue.js
vue实现简易的双向数据绑定
Dec 29 #Vue.js
elementui实现预览图片组件二次封装
Dec 29 #Javascript
利用node.js开发cli的完整步骤
Dec 29 #Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
Dec 29 #Javascript
vue中配置scss全局变量的步骤
Dec 28 #Vue.js
You might like
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
php实现解析xml并生成sql语句的方法
2018/02/03 PHP
TopList标签和JavaScript结合两例
2007/08/12 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
12 款 JS 代码测试必备工具(翻译)
2016/12/13 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
python获取当前日期和时间的方法
2015/04/30 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
Python线程创建和终止实例代码
2018/01/20 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
Python 占位符的使用方法详解
2019/07/10 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
python初步实现word2vec操作
2020/06/09 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
什么是.net
2015/08/03 面试题
毕业生造价工程师求职信
2013/10/17 职场文书
母亲80寿诞答谢词
2014/01/16 职场文书
创新型城市实施方案
2014/03/06 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
新闻稿怎么写
2015/07/18 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
Java设计模式之代理模式
2022/04/22 Java/Android