html设置referer防盗链,referer与防盗链
referer是什么
referer 中文意思是:参照页面,引用页。
下图直观感受,(づ ̄ 3 ̄)づ
image
直接在浏览器中输入url地址来直接访问图片/js/css等资源时是没有referer的,
如果有referer说明是引用过来的,要么是从HTML页面,要么是通过css @import,再或则通过background(url)引用。
获取reffer
console.log(req.headers['referer']); //必须小写
注意事项
关键字必须小写
旧浏览器中关键字为refer而不是referer
应用:reffer防盗链
设计思路
我们能通过对比req.headers['referer']和req.url中的localhost来确认资源请求是否是别的站点发来的。
接着知道了资源请求的来源,我们就能通过一系列手段来决定是否响应请求以及怎样响应。
通常的做法是设置一个白名单,在白名单内的请求我们就响应,否则就不响应。
源码
let http = require('http');
let fs = require('fs');
let url = require('url');
let path = require('path');
const whiteList = [
'localhost:8080'
// ,'192.168.0.22'
];
let server = http.createServer(function(req,res){
let refer = req.headers['referer']||req.headers['refer'];
if(refer){
let referHostName = url.parse(refer,true).host;
let currentHostName = url.parse(req.url,true).host;
if(referHostName != currentHostName && whiteList.indexOf(referHostName) == -1){
res.setHeader('Content-Type','text/html;charset=utf-8');
res.end('你娃娃居然盗链!'); //因为是图片资源请求,这里这样返回文字是无效的
return ;
}
}
res.setHeader('Content-Type','image/png');
fs.createReadStream(path.join(__dirname,'2.jpg')).pipe(res);
}).listen(9999);
html设置referer防盗链,referer与防盗链相关推荐
- referer htttp headers 统计信息 防盗链
HTTP headers是HTTP请求和相应的核心模块,它承载了关于客户端浏览器.请求页面.服务器等相关信息.Referer是HTTP头中的一个属性,告诉服务 器我是从哪个页面链接过来的,所携带的信息 ...
- 小程序的防盗链 VS 反盗链 - 总结篇
小程序的防盗链 VS 反盗链 - 总结篇>最近做小程序的时候,产品要求做防盗链处理,特意网罗了一下,貌似都只是一些手段而已. 抛砖总结一篇,仅供参考. 一.防盗链 1. 事件的起因 为何要设置小 ...
- Python--爬虫,了解防盗链-->解决防盗链,解决反反反爬
目录 一.什么是防盗链?其作用/原理是什么? 概念: 作用: 原理: 如何进行防盗链保护: 二.步骤分析 2.1.运行环境 2.2.目标 2.3.页面分析 2.3.1.进入主页面,尝试分析源代码 2. ...
- css 添加 referer,http中Referer和Referrer Policy
一. referer是什么referer:引用页.HTTP请求头信息中,referer用于提供访问来源的信息,客户端发送请求的时候,自主决定是否加上该字段.服务器一般使用referer识别访问来源,可 ...
- 外链自动转内链html,typecho网站外链自动转换内链插件ShortLinks
ShortLinks插件是一款可以把网站中的外链自动转换为内链的typecho插件,同时支持自定义短链接功能,且可以统计链接的点击数量.一般做SEO优化的人认为网站存在过多的外链会导致页面权重流失,从 ...
- 外链转内链php,Typecho:网站外链自动转换内链插件ShortLinks
ShortLinks插件是一款可以把网站中的外链自动转换为内链的typecho插件,同时支持自定义短链接功能,且可以统计链接的点击数量.一般做SEO优化的人认为网站存在过多的外链会导致页面权重流失,从 ...
- java链式编程_Java 链式编程 和 lombok 实现链式编程
一.链式编程定义 链式编程的原理就是返回一个this对象,就是返回本身,达到链式效果. 二.jdk中 StringBuffer 源码 我们经常用的 StringBuffer 就是 实现了链式的写法. ...
- 什么是区块链钱包?区块链钱包如何运作?
什么是区块链钱包?区块链钱包如何运作? 加密货币曾以其暴涨的价值引起轰动.因为加密货币的价值暴涨,区块链钱包开发的需求也在增加.截至2018年底,据报道有超过3000万用户使用钱包进行数字货币交易(据 ...
- 请求的链式处理——职责链模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7420891 "一对二","过","过&q ...
最新文章
- (读书笔记).NET大局观-.NET语言(1)
- 今天终于搞懂了:为什么 Java 的 main 方法必须是 public static void?
- (已解决)(Jupyter notebook)中的tqdm进度条不是在一行更新并显示而是一直滚动往下输出
- Linux监控进程的iops,linux性能监控工具--Collectl
- 数据结构和算法分析: 第五章 散列
- 4怎么修边_无胶静电玻璃贴膜该怎么贴?
- listview复用机制研究
- 微软 Edge bug 导致黑客窃取用户在任意站点的机密信息,颁发2万美元奖金
- Android开发中验证码的生成
- When executing step qmake
- 基于知识图谱的知识推理
- 混沌初开:全新HarmonyOS 2正式到来!
- linux私房菜总结(0-1)
- Python 汉字转化成拼音
- 2022茶艺师(中级)试题及答案
- 什么软件能测试电脑能不能玩lol,电脑是否适合玩LOL如何检测
- nvme linux raid,04-第4章-NVMe VROC KeyVROC NVMe RAID
- 计算机毕业设计 SSM家具销售系统 家具店管理系统 家具商城系统Java
- 新疆理化所计算机复试科目,2018年中科院新疆理化技术研究所考研专业目录
- 双栏word插入大图
热门文章
- python stack使用_python inspect.stack() 的简单使用
- 拦截器RetryAndFollowUpInterceptor分析
- Linux设置封包报头的函数,GitHub - LinuxDigger/RTMP
- 安装rpm包完成却报错(桌面软件类安装包),可以在usr/share/applications目录下找到图标打开
- 什么叫做项目孵化_什么叫创业孵化服务?
- python多进程map比apply快_python 多进程读写 map
- java版我的世界光追,老瓶装新酒 光追版《我的世界》将至你心动了吗
- Greeting Card 模拟
- python网络爬虫学习笔记(七):正则表达式
- AcWing1088.旅行问题(单调队列DP)