HTTP常用请求头和响应头有哪些?

news2024/11/18 15:36:36

一、什么是http

超文本传输协议( Hypertext Transfer Protocol ,HTTP)的请求和响应消息中,协议头部分的那些组件。用来准确描述正在获取的资源、服务器或者客户端的行为,定义了HTTP事务中的具体操作参数。

二、什么是http消息头

客户端请求(Request)或服务器响应(Response)时传递的,位请求或响应的第一行,HTTP消息体(请求或响应的内容)是其后传输。HTTP消息头,以明文的字符串格式传送,是以冒号分隔的键/值对,如:Accept-Charset: utf-8,每一个消息头最后以回车符(CR)和换行符(LF)结尾。

三、常用的http请求头

Accept: text/html  // 浏览器可以接受服务器回发的类型为 text/html。Accept: */*   代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个)。

Accept-Encoding: gzip, deflate // 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate)。

Accept-Language: zh-CN,zh;q=0.9  浏览器申明自己接收的语言。

Connection: keep-alive // 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。 Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

Content-Type: application/json  // 当客户端向服务端发起HTTP的POST请求时,客户端告诉服务端,我们发送的数据类型,方便服务端去解析数据。HTTP 中的 post 请求使用最多的Content-Type 类型是: application/json

Content-Type 的几种常见类型有:

①. application/x-www-form-urlencoded  // 说明:最常见的 POST 提交数据的方式,原生Form表单,如果不设置 enctype 属性,默认为application/x-www-form-urlencoded 方式提交数据。

②. multipart/form-data  // 说明:一个常见的 POST 数据提交的方式, Form 表单的 enctype 设置为multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。
它既可以上传键值对,也可以上传文件,甚至多个文件。

③. application/json  // 说明:用来告诉服务端消息主体是序列化后的 JSON 字符串,其中一个好处就是JSON 格式支持比键值对复杂得多的结构化数据。

④. text/xml  // 说明:提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据

⑤. binary(application/octet-stream) // 说明:用来传输二进制文件类型

请求头设置方法如下:

// axios请求体中设置
axios({
  url: '/api/user',
  method: 'post',
  headers: {
    'Content-Type': 'application/json'
  }
})

// 请求拦截器中设置
http.interceptors.request.use(
  config => {
    config.headers['Content-Type'] = 'application/json'
  }
)

Host: www.baidu.com // 请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。

Origin: http://47.104.200.167:8076  //  组成:协议 + 域名 + 端口号

指示了请求来自于哪个站点,该字段仅指示服务器名称,不包含任何路径信息,除了不包含路径信息,该字段与 Referer 首部字段相似,浏览器自动添加到http请求 Header 中,无需手动设置。

Referer: https://www.baidu.com/?tn=62095104_8_oem_dg  // 当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。

User-AgentUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36  // 告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。

Cache-ControlCache-Control: private  // 默认为private 响应只能够作为私有的缓存,不能再用户间共享。

Cache-Control: public // 响应会被缓存,并且在多用户间共享。正常情况, 如果要求HTTP认证,响应会自动设置为 private。

Cache-Control: must-revalidate  // 响应在特定条件下会被重用,以满足接下来的请求,但是它必须到服务器端去验证它是不是仍然是最新的。Cache-Control:no-cache 响应不会被缓存,而是实时向服务器端请求资源。

Cache-Control: max-age=10  // 设置缓存最大的有效时间,但是这个参数定义的是时间大小(比如:60)而不是确定的时间点。单位是[秒 seconds]。

Cache-Control: no-store  // 在任何条件下,响应都不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。

Cookie: '123456abcefg' // Cookie是用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见),比如cookie会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个cookie来存储相关信息,这样浏览器通过读取cookie的信息去服务器上验证并通过后会判定你是合法用户,从而允许查看相应网页。当然cookie里面的数据不仅仅是上述范围,还有很多信息可以存储是cookie里面,比如sessionid等。

Range: bytes=0-5  // 指定第一个字节的位置和最后一个字节的位置。用于告诉服务器自己想取对象的哪部分。

四、常用的http响应头

Access-Control-Allow-Origin: *   // *号代表所有网站可以跨域资源共享,如果当前字段为*那么Access-Control-Allow-Credentials就不能为trueAccess-Control-Allow-Origin: www.baidu.com 指定哪些网站可以跨域资源共享。

Access-Control-Allow-Methods:GET, POST, OPTIONS  // 允许哪些方法来访问。

Access-Control-Allow-Credentials: true  // 是否允许发送cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可。如果access-control-allow-origin为*,当前字段就不能为true。

Cache-Control: private  // 默认为private  响应只能够作为私有的缓存,不能再用户间共享

Cache-Control: public  // 浏览器和缓存服务器都可以缓存页面信息。

Cache-Control: must-revalidate  // 对于客户机的每次请求,代理服务器必须想服务器验证缓存是否过时。

Cache-Control: no-cache  // 浏览器和缓存服务器都不应该缓存页面信息。

Cache-Control: max-age=10  // 是通知浏览器10秒之内不要烦我,自己从缓冲区中刷新。

Cache-Control: no-store  // 请求和响应的信息都不应该被存储在对方的磁盘系统中。

Content-Type:text/html;charset=UTF-8  // 告诉客户端,资源文件的类型,还有字符编码,客户端通过utf-8对资源进行解码,然后对资源进行html解析。通常我们会看到有些网站是乱码的,往往就是服务器端没有返回正确的编码。

Content-Encoding: gzip  // 告诉客户端,服务端发送的资源是采用gzip编码的,客户端看到这个信息后,应该采用gzip对资源进行解码。

Date: Tue, 03 Apr 2018 03:52:28 GMT  // 这个是服务端发送资源时的服务器时间,GMT是格林尼治所在地的标准时间。http协议中发送的时间都是GMT的,这主要是解决在互联网上,不同时区在相互请求资源的时候,时间混乱问题。

Server:Tengine/1.4.6  // 这个是服务器和相对应的版本,只是告诉客户端服务器信息。

Transfer-Encoding:chunked  // 这个响应头告诉客户端,服务器发送的资源的方式是分块发送的。一般分块发送的资源都是服务器动态生成的,在发送时还不知道发送资源的大小,所以采用分块发送,每一块都是独立的,独立的块都能标示自己的长度,最后一块是0长度的,当客户端读到这个0长度的块时,就可以确定资源已经传输完了。

Expires:Sun, 1 Jan 2000 01:00:00 GMT 这个响应头也是跟缓存有关的,告诉客户端在这个时间前,可以直接访问缓存副本,很显然这个值会存在问题,因为客户端和服务器的时间不一定会都是相同的,如果时间不同就会导致问题。所以这个响应头是没有Cache-Control:max-age=*这个响应头准确的,因为max-age=date中的date是个相对时间,不仅更好理解,也更准确。

Connection:keep-alive  // 这个字段作为回应客户端的Connection:keep-alive,告诉客户端服务器的tcp连接也是一个长连接,客户端可以继续使用这个tcp连接发送http请求。

ETag: "737060cd8c284d8af7ad3082f209582d"  // 就是一个对象(比如URL)的标志值,就一个对象而言,比如一个html文件,如果被修改了,其Etag也会别修改,所以,ETag的作用跟Last-Modified的作用差不多,主要供WEB服务器判断一个对象是否改变了。比如前一次请求某个html文件时,获得了其 ETag,当这次又请求这个文件时,浏览器就会把先前获得ETag值发送给WEB服务器,然后WEB服务器会把这个ETag跟该文件的当前ETag进行对比,然后就知道这个文件有没有改变了。

Refresh: 5; url=http://baidu.com   // 用于重定向,或者当一个新的资源被创建时。默认会在5秒后刷新重定向。

http请求头示例

http响应头示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/437866.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

webGL前端数字孪生技术方案

本篇内容本是为公司内部分享会准备的大纲,发出来给想做webGL的前端做个参考。 课程介绍: 基于webGL技术,实现数字孪生应用。讲解从模型绘制、webGL框架、数据通讯等方案的技术选型。初步了解图形学的基础内容,熟悉webGL的开发流程…

瀚高股份吕新杰:创新开源双驱动 躬耕国产数据库

近年来,国际形势不断变幻,也给人们带来巨大警示:关键核心技术是买不来、讨不来的,中国科技企业需寻找研发自强之路。 瀚高基础软件股份有限公司(简称瀚高股份)专注数据库十八年,始终以“振兴民…

【技巧分享】Nacos未经授权的登录漏洞-任意密码直接登录后台

文章目录 前言一、nacos简介二、漏洞复现总结 前言 碰到个很有意思的系统&#xff0c;Nacos。通过查找资料&#xff0c;发现Nacos < 2.1.0 版本都存在这个漏洞。 漏洞描述&#xff1a;Nacos中发现影响Nacos < 2.1.0的问题&#xff0c;Nacos用户使用默认JWT密钥导致未授…

好用还免费的10个Figma插件推荐

Figma是一款广受设计师喜爱的工具&#xff0c;可用于创建和协作用户界面、图形和原型。它广泛应用的原因之一是因为有许多插件可供选择&#xff0c;可以增强其功能。在本文中&#xff0c;我们将探讨10个设计师必备的Figma插件。如果你无法使用Figma 可以使用即时设计——即时设…

OpenAI最新官方ChatGPT聊天插件接口《智能聊天插件引言》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(一)(附源码)

Chat Plugins Limited Alpha 聊天插件 前言IntroductionPlugin flow 插件流其它资料下载 Learn how to build a plugin that allows ChatGPT to intelligently call your API. 了解如何构建允许ChatGPT智能调用API的插件。 前言 在现代的软件开发环境中&#xff0c;使用第三方…

Doris使用总结

场景 Apache Doris是由百度贡献的开源MPP分析型数据库产品&#xff0c;亚秒级查询响应时间&#xff0c;支持实时数据分析&#xff1b;分布式架构简洁&#xff0c;易于运维&#xff0c;可以支持10PB以上的超大数据集&#xff1b;可以满足多种数据分析需求&#xff0c;例如固定历…

Maven(六):Maven的使用——继承与聚合

Maven&#xff08;六&#xff09;&#xff1a;Maven的使用——继承与聚合 前言一、实验九&#xff1a;继承1、概念2、作用3、举例4、操作4.1 创建父工程4.2 创建模块工程4.3 查看被添加新内容的父工程 pom.xml4.4 解读子工程的pom.xml4.5 在父工程中配置依赖的统一管理4.6 子工…

电脑端(PC)按键精灵——5.找色/找图命令

电脑端(PC)按键精灵——5.找色/找图命令 注&#xff1a;说了键盘、鼠标、其他、控制命令还有安装内容&#xff0c;现在说下颜色/图形命令&#xff0c;这一节相当重要 按键精灵小白入门详细教程&#xff1a; 电脑端(PC)按键精灵—小白入门 详细教程 命令介绍 1.GetPixelCol…

人大金仓携手深信服打造更高效、更融合一体化平台联合解决方案

近日&#xff0c;人大金仓数据库与深信服超融合平台完成深度优化&#xff0c;表现出性能更优、运行更稳定、数据更安全。双方联合打造更高效、更融合的一体化平台联合解决方案&#xff0c;能更好地满足行业信创升级需求。 随着新一轮信创政策陆续出台&#xff0c;信创产业从党政…

基于 SpringBoot + Vue 实现的可视化拖拽编辑的大屏项目

今天给小伙伴们分享一个基于 SpringBoot Vue 实现的可视化拖拽编辑的大屏项目&#xff1b; 一、简介 这个是一个开源的一个BI平台&#xff0c;酷炫大屏展示&#xff0c;能随时随地掌控业务动态&#xff0c;让每个决策都有数据支撑。 多数据源支持&#xff0c;内置mysql、el…

攻防世界-Reversing-x64Elf-100

Reversing-x64Elf-100 18最佳Writeup由 yuchouxuan 提供 收藏 反馈 难度&#xff1a;1 方向&#xff1a;Reverse 题解数&#xff1a;15 解出人数&#xff1a;2460 题目来源: 题目描述: 暂无 note:undefined8 FUN_004006fd(long param_1){int local_2c;char *local_28 …

设置环境变量

文章目录 window设置linux设置python设置 window设置 命令行设置 set 临时设置setx 永久设置 # 打开一个cmd命令行 set # 查看所有环境变量 set FLASK_APPsuperset # 临时设置&#xff0c;当前窗口有效 set FLASK_APP%FLASK_APP%;777 # # 查看 echo %FLASK_APP%# 永久设置…

1.18 从0开始学习Unity游戏开发--资源加载

在上一篇文章中&#xff0c;我们大约是开始接触到资源加载的事情了&#xff0c;场景资源则是一个比较特殊的资源&#xff0c;我们只要添加到Build Settings里面&#xff0c;那么我们就可以通过API直接加载。 但是其他类型的资源怎么办呢&#xff1f;比如我们制作一个网络游戏&…

为什么Spring和IDEA不推荐使用@Autowired注解?

在Spring开发中&#xff0c;Autowired注解是一个常用的依赖注入方式。但是&#xff0c;你可能会惊奇地发现&#xff0c;Spring和IDEA都不推荐使用Autowired注解。关于这个问题&#xff0c;其实答案相对统一&#xff0c;实际上用大白话说起来也容易理解。 官方答案 首先&#…

使用springboot解释什么是jwt

目录 使用springboot解释什么是jwt简介组成结构在springboot中的作用1. 添加依赖 在pom.xml文件中添加以下依赖2. 配置JWT 在Spring Boot的配置文件中配置JWT的相关参数&#xff0c;例如密钥、过期时间等&#xff1a;3. 创建JWT工具类 创建一个JWT工具类&#xff0c;用于生成和…

数据治理体系建设

01 数据治理建设路径 1. 业务数字化的目的是打造一体化的业务流、信息流与数据流 从企业整体经营管理的角度&#xff0c;战略制定及分解—领域业务目标制定—业务方案设计—业务需求识别 & 信息系统功能及数据库设计—数据汇聚及分析—业务目标监测及改善&#xff0c;这个…

Mysql安装详细教程

数据库相关概念 而目前主流的关系型数据库管理系统的市场占有率排名如下&#xff1a; Oracle&#xff1a;大型的收费数据库&#xff0c;Oracle公司产品&#xff0c;价格昂贵。 MySQL&#xff1a;开源免费的中小型数据库&#xff0c;后来Sun公司收购了MySQL&#xff0c;而Oracle…

PEIS体检管理系统源码,自主知识产权,文档齐全,功能完善

PEIS体检管理系统源码&#xff0c;自主知识产权&#xff0c;文档齐全&#xff0c;有演示。 体检条码化管理&#xff0c;体检数据比对&#xff0c;丰富的诊断模板&#xff0c;自动产生小结、综述和建议。 文末获取联系&#xff01; PEIS体检管理系统对医院体检中心进行系统化和…

java二维数组遍历

在 java中&#xff0c;二维数组是指在二维平面上的一个数组。在二维数组中&#xff0c;数据都是按行排序的。我们通常可以用“从上到下”、“从左到右”、“从后到前”等方法来遍历二维数组。由于二维数组中数据的有序性&#xff0c;我们可以在二维数组中快速地找到我们所需要的…

手机穿戴设备能力共享,提升丰富交互体验

HUAWEI Wear Engine面向手机和穿戴设备的应用与服务开发者&#xff0c;提供华为穿戴设备开放能力。 开发者通过调用Wear Engine开放能力&#xff0c;可以实现手机上的生态应用与服务给华为穿戴设备发消息、发通知、传输数据&#xff0c;并获取穿戴设备状态、读取传感器数据等&…