当前位置: 首页 > news >正文

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_iduser_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. 问题描述&#xff1a; 在使用python进行代码编译时&#xff0c;提示下面报错&#xff1a; "/home/bspuser/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py", line 18, in <module>import sqlite3File "/usr/local/lib/python2.7/sqlite3/_…...

【旷视科技-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

python学习记录16

字符串总结 python程序使用unicode编码&#xff0c;中文字符与英文字符都占一个字符&#xff0c;但英文字符只占一个字节&#xff0c;中文字符若按照utf-8格式编码占3个字节。 &#xff08;1&#xff09;字符串常用方法 1&#xff09;大小写转化 string.upper()#将所有字母…...

AI 大模型在软件开发中的角色

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/402a907e12694df5a34f8f266385f3d2.png#pic_center> &#x1f393;作者简介&#xff1a;全栈领域优质创作者 &#x1f310;个人主页&#xff1a;百锦再新空间代码工作室 &#x1f4de;工作室&#xff1a;新空间代…...

React中类组件和函数组件的理解和区别

react代码模块分为类组件和函数组件。 从语法和定义、内部状态管理、生命周期、性能、可读性和维护性、上下文、集成状态管理库等角度对比React中类组件和函数组件。 1、语法和定义 类组件&#xff1a; 使用 ES6 的类&#xff08;class&#xff09;语法定义的 React 组件。…...

Day62||prim算法精讲 |kruskal算法精讲

prim算法精讲 53. 寻宝&#xff08;第七期模拟笔试&#xff09; 题目描述 在世界的某个区域&#xff0c;有一些分散的神秘岛屿&#xff0c;每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路&#xff0c;方便运输。 不同岛屿之间&#xff0c;路途距离不同&…...

upload-labs通关练习

目录 环境搭建 第一关 第二关 第三关 第四关 第五关 第六关 第七关 第八关 第九关 第十关 第十一关 第十二关 第十三关 第十四关 第十五关 第十六关 第十七关 第十八关 第十九关 第二十关 总结 环境搭建 upload-labs是一个使用php语言编写的&#xff0c…...

wordpress搭建主题可配置json

网站首页展示 在线访问链接 http://dahua.bloggo.chat/ 配置json文件 我使用的是argon主题&#xff0c;你需要先安装好主题&#xff0c;然后可以导入我的json文件一键配置。 需要json界面配置文件的&#xff0c;可以在评论区回复&#xff0c;看见评论我会私发给你。~...

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分片下载超大文件

一、前言 各位亲爱的们&#xff0c;之前介绍过了上传超大文件到MinIO&#xff1a; MinIO分片上传超大文件&#xff08;纯服务端&#xff09;MinIO分片上传超大文件&#xff08;非纯服务端&#xff09; 这里最后再补充一下从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源做不了&#xff0c;请将下面的本地openstack源在控制节点和计算节点都配置 在控制节点上传&#xff0c;安装ftp并配置启动后再在计算节点配置 将openStack-train.iso文件通过MobaXterm远程连接软件上传至控制节点 /opt 目录下 挂载 进入 /opt 目录 创建…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...