HTTP常见的请求头有哪些?都有什么作用?在 Web 应用中使用这些请求头?
HTTP 请求头(Request Headers)用于在 HTTP 请求中携带额外的信息,帮助服务器更好地处理请求。以下是一些常见的 HTTP 请求头及其作用:
常见请求头及其作用
1. Accept
- 作用:告知服务器客户端可以接受的内容类型。
- 示例:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - 说明:客户端可以接受多种内容类型,优先级由
q参数决定。
2. Accept-Encoding
- 作用:告知服务器客户端支持的压缩编码方式。
- 示例:
Accept-Encoding: gzip, deflate, br - 说明:客户端支持 gzip、deflate 和 brotli 压缩。
3. Accept-Language
- 作用:告知服务器客户端首选的语言。
- 示例:
Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8 - 说明:客户端首选英语(美国),其次是英语(通用),最后是中文(简体)。
4. Authorization
- 作用:用于向服务器提供认证信息,通常用于 Basic 认证或 Bearer Token。
- 示例:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... - 说明:使用 Bearer Token 进行认证。
5. Content-Length
- 作用:告知服务器请求体的长度(以字节为单位)。
- 示例:
Content-Length: 348 - 说明:请求体的长度为 348 字节。
6. Content-Type
- 作用:告知服务器请求体的内容类型。
- 示例:
Content-Type: application/json - 说明:请求体是 JSON 格式的数据。
7. Cookie
- 作用:用于发送存储在客户端的 cookie 信息。
- 示例:
Cookie: session_id=123456; user_id=7890 - 说明:发送两个 cookie:
session_id和user_id。
8. Host
- 作用:指定请求的主机名和端口号。
- 示例:
Host: www.example.com:8080 - 说明:请求的目标主机是
www.example.com,端口号是8080。
9. Referer
- 作用:告知服务器当前请求是从哪个页面跳转过来的。
- 示例:
Referer: https://www.example.com/page1 - 说明:当前请求是从
https://www.example.com/page1页面跳转过来的。
10. User-Agent
- 作用:告知服务器客户端的浏览器和操作系统信息。
- 示例:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3 - 说明:客户端使用的是 Chrome 浏览器,操作系统是 Windows 10。
11. Cache-Control
- 作用:控制缓存行为。
- 示例:
Cache-Control: no-cache - 说明:要求不使用缓存,每次都从服务器获取最新数据。
12. Connection
- 作用:控制连接的状态。
- 示例:
Connection: keep-alive - 说明:保持连接打开,以便后续请求可以复用同一连接。
13. If-Modified-Since
- 作用:告知服务器只有在指定日期之后被修改的资源才会返回。
- 示例:
If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT - 说明:只有在 2015 年 10 月 21 日 07:28:00 GMT 之后被修改的资源才会返回。
14. If-None-Match
- 作用:告知服务器只有在实体标签(ETag)不匹配时才返回资源。
- 示例:
If-None-Match: "67ab4321cd8e" - 说明:只有在 ETag 不等于
"67ab4321cd8e"时才返回资源。
15. Origin
- 作用:用于 CORS(跨域资源共享)请求,告知服务器请求的来源。
- 示例:
Origin: https://www.example.com - 说明:请求的来源是
https://www.example.com。
16. Range
- 作用:请求资源的一部分。
- 示例:
Range: bytes=0-1023 - 说明:请求资源的前 1024 字节。
17. Upgrade
- 作用:请求升级到另一种协议,通常用于 WebSocket 协议。
- 示例:
Upgrade: websocket - 说明:请求将连接升级到 WebSocket 协议。
18. Sec-WebSocket-Key
- 作用:用于 WebSocket 握手,生成一个随机的密钥。
- 示例:
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== - 说明:生成的随机密钥。
19. Sec-WebSocket-Version
- 作用:告知服务器 WebSocket 协议的版本。
- 示例:
Sec-WebSocket-Version: 13 - 说明:使用 WebSocket 协议的第 13 版。
20. X-Requested-With
- 作用:告知服务器请求是由 AJAX 发起的。
- 示例:
X-Requested-With: XMLHttpRequest - 说明:请求是由 XMLHttpRequest 发起的。
如何在 Web 应用中使用这些请求头
前端(JavaScript/TypeScript)
使用 Fetch API
Fetch API 是现代浏览器提供的原生方法,用于发起 HTTP 请求。你可以通过 headers 选项来设置请求头。
fetch('https://api.example.com/data', {method: 'GET',headers: {'Accept': 'application/json','Authorization': 'Bearer your-token','User-Agent': 'MyApp/1.0'}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
使用 Axios
Axios 是一个流行的 HTTP 客户端库,支持浏览器和 Node.js。你也可以通过 headers 选项来设置请求头。
import axios from 'axios';axios.get('https://api.example.com/data', {headers: {'Accept': 'application/json','Authorization': 'Bearer your-token','User-Agent': 'MyApp/1.0'}
})
.then(response => {console.log(response.data);
})
.catch(error => {console.error('Error:', error);
});
后端(Node.js/Express)
使用 Express
在 Express 中,你可以通过 res.set 方法来设置响应头,或者通过 req.headers 来访问请求头。
const express = require('express');
const app = express();app.get('/data', (req, res) => {// 访问请求头const authorization = req.headers.authorization;// 设置响应头res.set({'Content-Type': 'application/json','Cache-Control': 'no-cache'});// 发送响应res.send({ message: 'Hello, World!', authorization });
});app.listen(3000, () => {console.log('Server is running on port 3000');
});
后端(Python/Flask)
使用 Flask
在 Flask 中,你可以通过 request.headers 来访问请求头,通过 response.headers 来设置响应头。
from flask import Flask, request, jsonifyapp = Flask(__name__)@app.route('/data')
def get_data():# 访问请求头authorization = request.headers.get('Authorization')# 创建响应response = jsonify({'message': 'Hello, World!','authorization': authorization})# 设置响应头response.headers['Content-Type'] = 'application/json'response.headers['Cache-Control'] = 'no-cache'return responseif __name__ == '__main__':app.run(port=3000)
常见请求头的使用示例
1. Authorization
在前端发起请求时,设置 Authorization 头:
fetch('https://api.example.com/data', {method: 'GET',headers: {'Authorization': 'Bearer your-token'}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
在后端访问 Authorization 头:
app.get('/data', (req, res) => {const authorization = req.headers.authorization;// 处理请求
});
2. Content-Type
在前端设置 Content-Type 头:
fetch('https://api.example.com/data', {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify({ key: 'value' })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
在后端访问 Content-Type 头:
app.post('/data', (req, res) => {const contentType = req.headers['content-type'];// 处理请求
});
3. Cache-Control
在后端设置 Cache-Control 头:
app.get('/data', (req, res) => {res.set({'Cache-Control': 'no-cache'});res.send({ message: 'Hello, World!' });
});
4. Accept
在前端设置 Accept 头:
fetch('https://api.example.com/data', {method: 'GET',headers: {'Accept': 'application/json'}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
在后端访问 Accept 头:
app.get('/data', (req, res) => {const accept = req.headers.accept;// 处理请求
});
总结
通过上述示例,你可以看到如何在前端和后端使用常见的 HTTP 请求头。这些请求头在实际应用中非常有用,可以帮助你更好地控制请求和响应的行为,提高应用的性能和安全性。希望这些示例对你有所帮助!
相关文章:
HTTP常见的请求头有哪些?都有什么作用?在 Web 应用中使用这些请求头?
HTTP 请求头(Request Headers)用于在 HTTP 请求中携带额外的信息,帮助服务器更好地处理请求。以下是一些常见的 HTTP 请求头及其作用: 常见请求头及其作用 1. Accept 作用:告知服务器客户端可以接受的内容类型。示例…...
电信数据清洗案例:利用MapReduce实现高效数据预处理
电信数据清洗案例:利用MapReduce实现高效数据预处理 在大数据时代,电信行业积累了大量的用户通话、短信、上网等行为数据。在数据分析和机器学习模型训练前,对这些数据进行清洗是至关重要的一步。MapReduce 是一种高效的数据处理模型&#x…...
react 中 FC 模块作用
React.FC 是一个泛型类型,用于定义函数组件的类型 一、类型定义和代码可读性 1. 明确组件类型 使用React.FC定义一个组件时,使得组件的输入(props)和输出(返回的 React 元素)都有明确的类型定义。 impo…...
多模态大模型(1)--CLIP
CLIP(Contrastive Language-Image Pre-training)模型是一种多模态预训练神经网络,由OpenAI在2021年发布。它通过对比学习的方式,将图像和文本映射到同一个向量空间中,从而实现跨模态的检索和分类。下面介绍其基础功能&…...
opencv入门学习总结
opencv学习总结 不多bb,直接上代码!!! 案例一: import cv2 # 返回当前安装的 OpenCV 库的版本信息 并且是字符串格式 print(cv2.getVersionString()) """ 作用:它可以读取不同格式的图像文…...
C/C++内存管理 | new的机制 | 重载自己的operator new
一、C/C内存分布 1. 内存分区 栈又叫堆栈–非静态局部变量/函数参数/返回值等等,栈是向下增长的。内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信 .堆用于程序运行时动态内…...
知识库管理系统:企业数字化转型的加速器
在数字化转型的大潮中,知识库管理系统(KBMS)已成为企业提升效率和创新能力的关键工具。本文将探讨知识库管理系统的定义、企业建立知识库的必要性,以及如何快速搭建企业知识库。 知识库管理系统是什么? 知识库管理系统…...
uniapp 如何使用vuex store (亲测)
首先是安装: npm install vuexnext --save 安装之后,Vue2 这样写 不管在哪里,建立一个JS文件,假设命名:store.js 代码这样写: import Vue from vue; import Vuex from vuex;Vue.use(Vuex);const store…...
[编译报错]ImportError: No module named _sqlite3解决办法
1. 问题描述: 在使用python进行代码编译时,提示下面报错: "/home/bspuser/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py", line 18, in <module>import sqlite3File "/usr/local/lib/python2.7/sqlite3/_…...
【旷视科技-注册/登录安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
python学习记录16
字符串总结 python程序使用unicode编码,中文字符与英文字符都占一个字符,但英文字符只占一个字节,中文字符若按照utf-8格式编码占3个字节。 (1)字符串常用方法 1)大小写转化 string.upper()#将所有字母…...
AI 大模型在软件开发中的角色
语法定义的 React 组件。…...
Day62||prim算法精讲 |kruskal算法精讲
prim算法精讲 53. 寻宝(第七期模拟笔试) 题目描述 在世界的某个区域,有一些分散的神秘岛屿,每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路,方便运输。 不同岛屿之间,路途距离不同&…...
upload-labs通关练习
目录 环境搭建 第一关 第二关 第三关 第四关 第五关 第六关 第七关 第八关 第九关 第十关 第十一关 第十二关 第十三关 第十四关 第十五关 第十六关 第十七关 第十八关 第十九关 第二十关 总结 环境搭建 upload-labs是一个使用php语言编写的,…...
wordpress搭建主题可配置json
网站首页展示 在线访问链接 http://dahua.bloggo.chat/ 配置json文件 我使用的是argon主题,你需要先安装好主题,然后可以导入我的json文件一键配置。 需要json界面配置文件的,可以在评论区回复,看见评论我会私发给你。~...
RWKV-5/6 论文被 COLM 2024 收录
由 Bo PENG 和 RWKV 开源社区共同完成的 RWKV-5/6架构论文《Eagle and Finch: RWKV with Matrix-Valued States and Dynamic Recurrence》被顶级会议 COLM 2024 收录。 这是继 RWKV-4 架构论文《RWKV: Reinventing RNNs for the Transformer Era》被 EMNLP 2023 收录之后&…...
MinIO分片下载超大文件
一、前言 各位亲爱的们,之前介绍过了上传超大文件到MinIO: MinIO分片上传超大文件(纯服务端)MinIO分片上传超大文件(非纯服务端) 这里最后再补充一下从MinIO下载超大文件。 二、从MinIO分片下载大文件 …...
Vue3 -- 新组件【谁学谁真香系列6】
Teleport Teleport是什么?–Teleport是一种能够将我们的组件html结构移动到指定位置的技术。 父组件: <template><div calss="outer"><h2>我是App组件</h2><img src="https://z1.ax1x.com/2023/11/19/piNxLo4.jpg" alt=&qu…...
Openstack3--本地仓库搭建(ftp源搭建失败)
上传镜像 后面的ftp源做不了,请将下面的本地openstack源在控制节点和计算节点都配置 在控制节点上传,安装ftp并配置启动后再在计算节点配置 将openStack-train.iso文件通过MobaXterm远程连接软件上传至控制节点 /opt 目录下 挂载 进入 /opt 目录 创建…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
