什么是HTTP协议?

目录

概念

特点

请求数据格式

请求行

请求头

请求体

响应数据格式

响应行

响应头

响应体

相关的类

HttpServletRequest

HttpServletResponse


概念

HTTP全称Hyper Text Transfer Protocol,即超文本传输协议,规定了浏览器和服务器之间数据传输的规则。

特点

1. 基于TCP协议,面向连接,安全

2. 基于请求-响应模型,一次请求对应一次响应

3. HTTP协议是无状态的协议,对于事物处理没有记忆能力,每次请求-响应都是独立的

缺点:多次请求之间不能共享数据

优点:速度快

请求数据格式

例如:

POST /test HTTP/1.1
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 41
Content-Type: application/json;charset=UTF-8
Host: localhost:8080
Origin: null
Pragma: no-cache
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0
sec-ch-ua: "Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"{"username":"艾伦","password":"123abc"}

请求行

POST /test HTTP/1.1

请求数据的第一行,包含请求方式资源路径协议

请求头

Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 41
Content-Type: application/json;charset=UTF-8
Host: localhost:8080
Origin: null
Pragma: no-cache
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0
sec-ch-ua: "Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"

从第二行开始,格式为key: value

常见的请求头:

请求头含义
Host请求的主机名
User-Agent浏览器的版本
Accept浏览器能接收的资源类型
Accept-Language浏览器偏好的语言
Accept-Encoding浏览器支持的压缩类型
Content-Type请求主体的数据类型
Content-Length请求主体的大小,单位:字节

请求体

{"username":"艾伦","password":"123abc"}

请求体和请求头之间有一个空行,请求体用于存放请求参数

GET请求和DELETE请求没有请求体,请求参数在请求行中。POST请求和PUT请求有请求体,请求参数在请求体中。

响应数据格式

例如:

HTTP/1.1 200
Access-control-Allow-Origin: null
Access-Control-Allow-Methods: GET,POST,OPTIONS,PUT,DELETE,PATCH
Content-Type: application/json
Content-Length: 41
Date: Mon, 18 Dec 2023 10:50:20 GMT
Keep-Alive: timeout=60
Connection: keep-alive{"username":"艾伦","password":"123abc"}

响应行

HTTP/1.1 200

响应数据的第一行,包含协议状态码

响应头

Access-control-Allow-Origin: null
Access-Control-Allow-Methods: GET,POST,OPTIONS,PUT,DELETE,PATCH
Content-Type: application/json
Content-Length: 41
Date: Mon, 18 Dec 2023 10:50:20 GMT
Keep-Alive: timeout=60
Connection: keep-alive

从第二行开始,格式为key: value

响应体

{"username":"艾伦","password":"123abc"}

响应体和响应头之间有一个空行,响应体用于存放响应数据

状态码类型:

类型含义
1xx响应中:临时状态码,表示请求已经接收,告诉客户端应该继续请求或者如果请求已经完成则忽略。
2xx成功:表示请求已经被成功接收,处理已完成。
3xx重定向:重定向到其他地方,让客户端再发起一次请求以完成整个处理。
4xx客户端错误:处理发生错误,责任在客户端。例如,请求了不存在的资源、客户端未被授权、禁止访问等。
5xx服务器错误:处理发生错误,责任在服务端。例如,程序抛出异常等。

常见的响应头:

响应头含义
Content-Type响应内容的类型
Content-Length响应内容的长度
Content-Encoding响应压缩算法
Cache-Control客户端缓存方式
Set-Cookie为当前域设置Cookie

相关的类

HTTP请求对象:HttpServletRequest

HTTP响应对象:HttpServletResponse

HttpServletRequest

HttpServletResponse

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

interface接口(学习推荐版)

接口组成部分 示例代码: 1.默认会在类型前面添加public staic final修饰变量,所以可省略 2.默认在方法前面添加public abstract修饰,但没有staic和final修饰 注意事项: 1、用staic final的变量就是常量 2、接口只能由成员变量&a…

思倍云荣膺2023年度“毕马威中国领先不动产科技企业50”

12月15日,毕马威在上海举办以“聚合力 筑未来”为主题的2023年度“毕马威中国领先不动产科技50”的报告发布会。思倍云荣登2023“毕马威中国领先不动产科技企业50”榜单。 随着AI和大数据的发力、区块链技术的发展和“元宇宙”概念的兴起,数字化正引领着…

ik分词器动态从数据库中加载数据无需重启

ik分词器加载mysql数据库中的热词库 1、下载elasticsearch-analysis-ik 源码包 下载elasticsearch-analysis-ik打开项目(https://github.com/medcl/elasticsearch-analysis-ik) 2、修改插件代码 (1)修改pom.xml中对应版本号 (2)org.wltea.analyzer.dic.Dictionary 单…

Python使用HTTP库发送GET请求的示例——轻松探索网络世界

大家好,今天我要给大家介绍一个非常实用的Python库——HTTP库,它可以帮助我们轻松地发送HTTP请求。今天,我们就来学习一下如何使用HTTP库发送GET请求。 首先,我们需要安装HTTP库。如果你还没有安装,可以通过pip命令进…

开源一个超好用的接口Mock工具——Msw-Tools

作为一名前端开发,是不是总有这样的体验:基础功能逻辑和页面UI开发很快速,本来可以提前完成,但是接口数据联调很费劲,耗时又耗力,有时为了保证进度还不得不加加班。 为了摆脱这种痛苦,经过一周的…

RK3588安装TVM-GPU版本

1.前言 RK3588还有相应的GPU可以使用,我们也可以配置相关的环境,进行GPU的使用 2. RK3588的GPU介绍 Mali-G610 是 Arm 公司开发的第三代 Valhall 架构的 GPU。它于 2022 年 7 月发布,面向中端和高端移动设备。 Mali-G610 采用 Armv9 架构&am…

c jpeg 理论霍夫曼 DC AC表,c程序实现正向逆向转换

此4张表是理论表,不是针对某张图片的特定表。如程序不统计生成某图片的专用霍夫曼表,应该也可用理论表代用。 1.亮度DC表 左边第一列是二进制位数,就是对此位数编码 中间一列是生成比特流的位数,右边是生成的比特流。 2.色度DC…

KSP音频抓包

1. 按照网上其他教程&#xff0c;安装KSP抓音频 Biu~笔记&#xff1a;高通蓝牙ADK&#xff08;38&#xff09;-- KSP in MDE - 大大通(简体站) Biu~笔记&#xff1a;高通蓝牙ADK&#xff08;22&#xff09;--DSP音频链路监听 - 大大通(简体站) <<Biu~笔记&#xff1a;高…

《volatile使用与学习总结:2023-12-17》多层面分析学习java关键字--volatile

一、简介 volatile是java中提供的一种轻量级的同步机制&#xff0c;相比于synchronized更加轻量&#xff0c;因为volatile避免了线程频繁的上下文切换和调度&#xff0c;但是也有缺点&#xff0c;同步性差并且使用起来易出错。 二、并发编程的三个概念 原子性 原子性即一个操…

抖店不出单,看看是不是这几个方面出了问题?

我是电商珠珠 很多人在开了抖店之后&#xff0c;原本预想的销量跟实际的有很大差别&#xff0c;以为每天可以出上百单甚至上千单&#xff0c;实际上一周还出不了五十单。 有人就会疑惑说我明明都按照网上的说法做了&#xff0c;怎么结果还是这样&#xff1f;我做店已经有三年…

直播预约丨《实时湖仓实践五讲》第五讲:实时湖仓领域的最佳实践解析

如今&#xff0c;大规模、高时效、智能化数据处理已是“刚需”&#xff0c;企业需要更强大的数据平台&#xff0c;来应对数据查询、数据处理、数据挖掘、数据展示以及多种计算模型并行的挑战&#xff0c;湖仓一体方案应运而生。 《实时湖仓实践五讲》是袋鼠云打造的系列直播活…

域架构下的功能安全思考

来源&#xff1a;联合电子 随着整车电子电气架构的发展&#xff0c;功能域控架构向整车集中式区域控制演进。新的区域控制架构下&#xff0c;车身控制模块(BCM)&#xff0c;整车控制单元&#xff08;VCU&#xff09;&#xff0c;热管理系统&#xff08;TMS&#xff09;和动力底…