Jquery添加头信息的2种方法以及Referer头信息的作用

2024-06-10 04:58

本文主要是介绍Jquery添加头信息的2种方法以及Referer头信息的作用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

添加头信息

以下提供了2种设置头信息的方法

     $.ajax({url: '/test',headers: {// 设置方法1:使用headers属性来设置a: 1,b: 2,Referer: 'http://localhost:3000/index.html'// 这句话试图在请求头中添加网站来源,由于浏览器的安全限制,该句不会生效,且报出'Refused to set unsafe header "Referer"'的错误},beforeSend(xhr) {// 设置方法2:使用setRequestHeader方法来设置xhr.setRequestHeader('c', 3)xhr.setRequestHeader('d', 4)},})

注意:并不是所有被添加的头信息都能生效,如:Referer

关于Referer

1 防止csrf

因为csrf是欺骗用户打开某个恶意网站,然后在这个网站隐性的发送被攻击网站的请求,如果Referer信息不受信任,被攻击网站可以拒绝此次恶意访问

2 用于统计网站流量来源

点击a链接,跳转至本站时,通常浏览器会带上Referer头信息,来标识来源,本站拿到这个信息,可以做统计分析

3 防盗链

用户访问本站资源时,后台拿到Referer头信息判断该用户来源是否在服务范围内,如果不在,可以响应403拒绝提供资源,或者响应302重定向到其他资源,以流量计费的网站适用此项技术,试想别人盗用你的资源,同时也浪费了你网站的流量,使用此项技术,可减少资源被盗用的风险

如下示例,是百度防盗链图片,没有Referer头信息时(在地址栏直接打开不带有Referer头信息)或者Referer头信息是baidu.com时,均可正常访问,如果不是,就会重定向到其他图片:

<img src="http://c.hiphotos.baidu.com/image/w%3D210/sign=ed30880babec8a13141a50e1c7029157/d52a2834349b033be1a9503e17ce36d3d539bd35.jpg?qq-pf-to=pcqq.group">

使用img标签访问以上图片,会显示:

如果使用地址栏直接打开图片url,则会正常显示:

破解防盗链

方法原理:破解防盗链的方法很简单,可以去除Referer头信息(伪造是直接在地址栏中打开)或者修改Referer头信息(伪造是可信网站来源)

node修改头信息示例:

// 使用superagent发起后台请求
const request = require('superagent')app.all('/get', (req, res) => {request// 访问图片链接.get('http://c.hiphotos.baidu.com/image/w%3D210/sign=ed30880babec8a13141a50e1c7029157/d52a2834349b033be1a9503e17ce36d3d539bd35.jpg?qq-pf-to=pcqq.group')// 设置头信息(如果不设置,也是能正常下载到本地的,因为伪造了在地址栏中直接打开的假象,但是设置错误的话,就会重定向到其他图片了).set('Referer', 'https://www.baidu.com')// 写入本地.pipe(fs.createWriteStream('test.png'))
})

结果:

 

这篇关于Jquery添加头信息的2种方法以及Referer头信息的作用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1047273

相关文章

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

css中的 vertical-align与line-height作用详解

《css中的vertical-align与line-height作用详解》:本文主要介绍了CSS中的`vertical-align`和`line-height`属性,包括它们的作用、适用元素、属性值、常见使用场景、常见问题及解决方案,详细内容请阅读本文,希望能对你有所帮助... 目录vertical-ali

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

mss32.dll文件丢失怎么办? 电脑提示mss32.dll丢失的多种修复方法

《mss32.dll文件丢失怎么办?电脑提示mss32.dll丢失的多种修复方法》最近,很多电脑用户可能遇到了mss32.dll文件丢失的问题,导致一些应用程序无法正常启动,那么,如何修复这个问题呢... 在电脑常年累月的使用过程中,偶尔会遇到一些问题令人头疼。像是某个程序尝试运行时,系统突然弹出一个错误提