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与防盗链相关推荐

  1. referer htttp headers 统计信息 防盗链

    HTTP headers是HTTP请求和相应的核心模块,它承载了关于客户端浏览器.请求页面.服务器等相关信息.Referer是HTTP头中的一个属性,告诉服务 器我是从哪个页面链接过来的,所携带的信息 ...

  2. 小程序的防盗链 VS 反盗链 - 总结篇

    小程序的防盗链 VS 反盗链 - 总结篇>最近做小程序的时候,产品要求做防盗链处理,特意网罗了一下,貌似都只是一些手段而已. 抛砖总结一篇,仅供参考. 一.防盗链 1. 事件的起因 为何要设置小 ...

  3. Python--爬虫,了解防盗链-->解决防盗链,解决反反反爬

    目录 一.什么是防盗链?其作用/原理是什么? 概念: 作用: 原理: 如何进行防盗链保护: 二.步骤分析 2.1.运行环境 2.2.目标 2.3.页面分析 2.3.1.进入主页面,尝试分析源代码 2. ...

  4. css 添加 referer,http中Referer和Referrer Policy

    一. referer是什么referer:引用页.HTTP请求头信息中,referer用于提供访问来源的信息,客户端发送请求的时候,自主决定是否加上该字段.服务器一般使用referer识别访问来源,可 ...

  5. 外链自动转内链html,typecho网站外链自动转换内链插件ShortLinks

    ShortLinks插件是一款可以把网站中的外链自动转换为内链的typecho插件,同时支持自定义短链接功能,且可以统计链接的点击数量.一般做SEO优化的人认为网站存在过多的外链会导致页面权重流失,从 ...

  6. 外链转内链php,Typecho:网站外链自动转换内链插件ShortLinks

    ShortLinks插件是一款可以把网站中的外链自动转换为内链的typecho插件,同时支持自定义短链接功能,且可以统计链接的点击数量.一般做SEO优化的人认为网站存在过多的外链会导致页面权重流失,从 ...

  7. java链式编程_Java 链式编程 和 lombok 实现链式编程

    一.链式编程定义 链式编程的原理就是返回一个this对象,就是返回本身,达到链式效果. 二.jdk中 StringBuffer 源码 我们经常用的 StringBuffer 就是 实现了链式的写法. ...

  8. 什么是区块链钱包?区块链钱包如何运作?

    什么是区块链钱包?区块链钱包如何运作? 加密货币曾以其暴涨的价值引起轰动.因为加密货币的价值暴涨,区块链钱包开发的需求也在增加.截至2018年底,据报道有超过3000万用户使用钱包进行数字货币交易(据 ...

  9. 请求的链式处理——职责链模式

    本文转载自 :http://blog.csdn.net/lovelion/article/details/7420891 "一对二","过","过&q ...

最新文章

  1. (读书笔记).NET大局观-.NET语言(1)
  2. 今天终于搞懂了:为什么 Java 的 main 方法必须是 public static void?
  3. (已解决)(Jupyter notebook)中的tqdm进度条不是在一行更新并显示而是一直滚动往下输出
  4. Linux监控进程的iops,linux性能监控工具--Collectl
  5. 数据结构和算法分析: 第五章 散列
  6. 4怎么修边_无胶静电玻璃贴膜该怎么贴?
  7. listview复用机制研究
  8. 微软 Edge bug 导致黑客窃取用户在任意站点的机密信息,颁发2万美元奖金
  9. Android开发中验证码的生成
  10. When executing step qmake
  11. 基于知识图谱的知识推理
  12. 混沌初开:全新HarmonyOS 2正式到来!
  13. linux私房菜总结(0-1)
  14. Python 汉字转化成拼音
  15. 2022茶艺师(中级)试题及答案
  16. 什么软件能测试电脑能不能玩lol,电脑是否适合玩LOL如何检测
  17. nvme linux raid,04-第4章-NVMe VROC KeyVROC NVMe RAID
  18. 计算机毕业设计 SSM家具销售系统 家具店管理系统 家具商城系统Java
  19. 新疆理化所计算机复试科目,2018年中科院新疆理化技术研究所考研专业目录
  20. 双栏word插入大图

热门文章

  1. python stack使用_python inspect.stack() 的简单使用
  2. 拦截器RetryAndFollowUpInterceptor分析
  3. Linux设置封包报头的函数,GitHub - LinuxDigger/RTMP
  4. 安装rpm包完成却报错(桌面软件类安装包),可以在usr/share/applications目录下找到图标打开
  5. 什么叫做项目孵化_什么叫创业孵化服务?
  6. python多进程map比apply快_python 多进程读写 map
  7. java版我的世界光追,老瓶装新酒 光追版《我的世界》将至你心动了吗
  8. Greeting Card 模拟
  9. python网络爬虫学习笔记(七):正则表达式
  10. AcWing1088.旅行问题(单调队列DP)