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 相关文章推荐
无阻塞加载脚本分析[全]
Jan 20 Javascript
基于jQuery的Tab选项框效果代码(插件)
Mar 01 Javascript
Jquery 点击按钮自动高亮实现原理及代码
Apr 25 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
May 11 Javascript
JQuery实现表格动态增加行并对新行添加事件
Jul 30 Javascript
使用js获取图片原始尺寸
Dec 03 Javascript
Thinkjs3新手入门之添加一个新的页面
Dec 06 Javascript
使用JavaScript实现node.js中的path.join方法
Aug 12 Javascript
jquery.pagination.js分页使用教程
Oct 23 jQuery
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
Nov 30 Javascript
使用vue中的混入mixin优化表单验证插件问题
Jul 02 Javascript
vue-cli3 引入 font-awesome的操作
Aug 11 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
使用PHP静态变量当缓存的方法
2013/11/13 PHP
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
php中数组最简单的使用方法
2020/12/27 PHP
js arguments.callee的应用代码
2009/05/07 Javascript
window.location.hash 使用说明
2010/11/08 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
在Python中使用元类的教程
2015/04/28 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
基于Django用户认证系统详解
2018/02/21 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
服务标语口号
2014/07/01 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
承诺书样本
2014/08/30 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
2016年母亲节广告语
2016/01/28 职场文书