HTTP协议(请求方式,响应方式,请求行、头、体,状态码)是热点面试题【详解】

news2024/10/22 7:56:34

目录

1. HTTP简介  

1.介绍

2.浏览器抓包

3.特点

2. HTTP请求

1.HTTP请求的格式

2.HTTP请求方式

3.GET方式的请求示例

请求行

请求头

请求体

4.POST方式的请求示例

请求行

请求头

请求体

GET和POST的区别

5.HTTP响应

1.HTTP响应的格式

2 常见响应头

3 响应状态码


1. HTTP简介  

1.介绍

HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输时,数据的格式规范。是互联网上应用最为广泛的网络协议。

HTTP协议规定的数据格式由两部分组成:

  • HTTP请求:客户端发送给服务端的数据

  • HTTP响应:服务端返回给客户端的数据

HTTP协议是请求驱动的:有请求才会有响应;没有请求就没有响应(服务端高冷闷骚)

2.浏览器抓包

        如果想知道http协议的数据传输格式有哪些,可以打开浏览器,点击F12打开开发者工具,点击Network来查看

查看请求

浏览器发送给服务端的数据

查看响应

服务器给向浏览器返回的数据

3.特点

  • 基于TCP协议: 面向连接,安全

  • 请求驱动: 有请求才有响应,没有请求就没有响应

  • HTTP协议是无状态协议: 对于数据没有记忆能力。每次请求-响应都是独立的

  • 无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。

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

    • 优点: 速度快

    请求之间无法共享数据会引发的问题:

    • 如:京东购物。加入购物车和去购物车结算是两次请求

    • 由于HTTP协议的无状态特性,加入购物车请求响应结束后,并未记录加入购物车是何商品

    • 发起去购物车结算的请求后,因为无法获取哪些商品加入了购物车,会导致此次请求无法正确展示数据

    具体使用的时候,我们发现京东是可以正常展示数据的,原因是Java早已考虑到这个问题,并提出了使用会话技术(Cookie、Session)来解决这个问题。具体如何来做,后面文章解释

2. HTTP请求

1.HTTP请求的格式

HTTP请求的格式又分为:

  • 请求行:本次请求的基本信息。

    格式:请求方式 请求路径 协议版本

    示例:GET /emp/1 HTTP/1.1

  • 请求头:本次请求的附加信息。

    格式:一行一个键值对,一个键值对是一个请求头,一次请求可以有多个请求头

    示例:Host: localhost:8080

  • 请求体:本次请求的正文内容。

    格式:没有固定格式,可以是json,也可以是表单,也可以是二进制数据

    其中:

    • json格式示例:{"name":"tom", "age": 20}

    • 表单格式示例:name=tom&age=20

    注意:POST和PUT方式才有请求体,GET和DELETE方式没有请求体

2.HTTP请求方式

在HTTP1.1版本中,浏览器访问服务器的几种方式:

3.GET方式的请求示例

请求行

本次请求的基本信息,在HTTP请求中的第一行,格式:请求方式 资源路径 协议版本

其中资源路径:/brand/findAll?name=OPPO&status=1

  • 请求路径:/brand/findAll

  • 请求参数:name=OPPO&status=1

    • 请求参数是以key=value形式出现

    • 多个请求参数之间使用&连接

  • 请求路径和请求参数之间使用?连接

请求头

本次请求的附加信息,从第二行开始,上图黄色部分内容就是请求头。格式为key: value形式

常见的HTTP请求头有:

  • Host: 表示请求的目标服务器主机名

  • User-Agent: 客户端浏览器的信息

    例如:Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79 ,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko

  • Accept:表示浏览器能接收的资源类型,如text/*image/*或者*/*表示所有;

  • Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;

  • Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。

  • Content-Type:请求主体的数据类型

  • Content-Length:数据主体的大小(单位:字节)

请求体

GET和DELETE方式没有请求体

4.POST方式的请求示例

请求行

本次请求的基本信息,以上图中红色部分,在HTTP请求中的第一行,格式:请求方式 资源路径 协议版本

请求头

本次请求的附加信息,以上图中黄色部分

请求体

本次请求的正文内容,通常是提交给服务端的请求参数,以上图中绿色部分

请求参数的格式,常见的有:

  • json格式:Ajax技术使用POST方式提交的数据通常是json格式的,例如 {"name":"tom", "age":20}

  • 表单格式:传统的表单使用<input type="submit">提交的是表单格式,例如 name=tom&age=20

  • 二进制形式:客户端上传文件时使用二进制形式

注意:请求体和请求头之间是有一个空行隔开(作用:用于标记请求头结束)

GET和POST的区别

5.HTTP响应

1.HTTP响应的格式

与HTTP的请求一样,HTTP响应的数据也分为3部分:

  • 响应行:本次响应的基本内容

    格式:协议版本 响应状态码 响应描述

    例如:HTTP/1.1 200 OK

  • 响应头:本次响应的附加信息

    格式:一行一个键值对,一个键值对是一个响应头,一次响应可以有多个响应头

    例如:Content-Type: application/json

  • 响应体:本次响应的正文内容

    格式:没有固定格式,响应什么客户端就得到什么

2 常见响应头

  • Content-Type:表示该响应内容的类型,例如text/html,image/jpeg ;

  • Content-Length:表示该响应内容的长度(字节数);

  • Content-Encoding:表示该响应压缩算法,例如gzip ;

  • Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒 ;

3 响应状态码

参考: 具体的码很多这里只介绍少五大类和常见的,可以去官网上查,

状态码大全:状态 | Status - HTTP 中文开发手册 - 开发者手册 - 腾讯云开发者社区-腾讯云

常见的响应状态码:
    

        

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

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

相关文章

python基础(11)《Allure报告中的组件用法》

使用 官方教程&#xff1a;https://docs.qameta.io/allure 入门 想要看到allure报告&#xff0c;需要做2个步骤&#xff1a; 1、pytest执行时关联allure&#xff1a;pytest命令带上--alluredir 结果存放目录或--alluredir结果存放目录&#xff1b; 2、打开执行报告&#xff…

前端性能优化 | CDN缓存

前言 CDN&#xff08;Content Delivery Network&#xff09;是一种分布式的网络架构&#xff0c;通过在全球各地部署节点服务器来快速传输和分发网络内容。CDN的主要目标是提供快速、可靠的内容传输&#xff0c;以提升用户体验。 本文主要从以下方面讲解CDN 什么是CDNCDN的作…

利用GPT开发应用003:GPT分词和预测

文章目录 一、概率问题二、令牌&#xff08;分词&#xff09;三、预测 一、概率问题 像 GPT 这样的大型语言模型接收一个提示&#xff0c;并返回通常在上下文中有意义的输出。例如&#xff0c;提示可以是“今天天气很好&#xff0c;所以我决定”&#xff08;“The weather is n…

vite项目修改node_modules

问题详情 在使用某个依赖的时候遇到了bug&#xff0c;提交issue后不想一直等待到作者更新版本&#xff0c;所以寻求临时自己解决 问题解决 在node_modules里找到需要修改的依赖&#xff0c;修改想要修改的代码 修改后记得保存 然后在node_modules里找到.vite文件夹&#x…

便捷在线导入:完整Axure元件库集合,让你的设计更高效!

Axure元件库包含基本的工具组件&#xff0c;可以使原型绘制节省大量的重复工作&#xff0c;保持整个设计页面的一致性和标准化&#xff0c;同时显得专业。Axure元件库就像我们日常生活中的门把手、自行车踏板和桌子上的螺丝钉&#xff0c;需要组装才能使用。作为一名成熟的产品…

java集合(泛型数据结构)

1.泛型 1.1泛型概述 泛型的介绍 泛型是JDK5中引入的特性&#xff0c;它提供了编译时类型安全检测机制 泛型的好处 把运行时期的问题提前到了编译期间 避免了强制类型转换 泛型的定义格式 <类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如: …

职工医疗报销管理系统

目录 1 系统目标与范围说明... 0 1.1项目名称... 0 1.2问题说明... 0 1.3项目目标... 0 1.4项目范围... 0 1.5初步想法... 0 1.6可行性研究计划... 0 2 可行性分析报告... 1 2.1系统概述... 1 2.2可行性分析... 2 2.3结论意见... 2 3 项目开发计划... 2 3.1系统…

【笔记】Android Telephony 漫游SPN显示定制(Roaming Alpha Tag)

一、功能名词简介和显示规则 Alpha Tag&#xff1a;运营商名称标识符&#xff0c;也是用于标识运营商的一个名称。客户需求描述常用名词&#xff0c;对开发而言都是SPN/PLMN功能模块的内容&#xff0c;状态栏左上角的运营商名称显示。 SPN相关文章&#xff1a; 【笔记】SPN和…

Java on VS Code 2月更新|创建 Maven 模块支持,项目管理体验优化!

作者&#xff1a;Nick Zhu - Senior Program Manager, Developer Division At Microsoft 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎来到2024年2月的 Visual Studio Code Java 更新&#xff01;在本篇博客中&#xff0c;我们将分享项目管理体验的改进以及 Maven 多模块…

【MySQL | 第三篇】MySQL索引及两种索引分类方法总结

文章目录 3.MySQL索引及两种索引分类方法3.1索引的概念3.1.1相关定义3.1.2查询例子 3.2索引的底层3.2.1二叉树&#xff08;1&#xff09;满二叉树&#xff08;2&#xff09;完全二叉树&#xff08;3&#xff09;二叉查找树&#xff08;4&#xff09;二叉平衡树&#xff08;AVL&…

uniapp——nextTick(vue3)数据更新完之后加载

说明 将回调推迟到下一个 DOM 更新周期之后执行。在更改了一些数据以等待 DOM 更新后立即使用它。 代码 <view class"tabBox"><scroll-view scroll-x"true" :scroll-with-animation"true"><view class"box"><…

利用“定时执行专家”循环执行BAT、VBS、Python脚本——含参数指定功能

目录 一、软件概述 二、VBS脚本执行设置 三、触发器设置 四、功能亮点 五、总结 在自动化办公和日常计算机任务管理中&#xff0c;定时执行脚本是一项非常重要的功能。今天&#xff0c;我将为大家带来一款名为“定时执行专家”的软件的评测&#xff0c;特别是其定时执行VB…

leetCode刷题 5.最长回文子串

目录 1. 思路 2. 解题方法 3. 复杂度 4. Code 题目&#xff1a; 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#x…

3.7 day2 Free RTOS

使用ADC采样光敏电阻数值&#xff0c;如何根据这个数值调节LED灯亮度。2.总结DMA空闲中断接收数据的使用方法 while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */adc_value HAL_ADC_GetValue(&hadc);TIM3->CCR3 adc_value * 999 / 4095;printf("%d …

Docker网络+原理+link+自定义网络

目录 一、理解Docker网络 1.1 运行tomcat容器 1.2 查看容器内部网络地址 1.3 测试连通性 二、原理 2.1 查看网卡信息 2.2 再启动一个容器测试网卡 2.3 测试tomcat01 和tomcat02是否可以ping通 2.4 只要删除容器,对应网桥一对就没了 2.5 结论 三、--link 3.…

探索考古文字场景,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建文本考古场景下的甲骨文字符图像检测识别系统

甲骨文是一种非常历史悠久的古老文字&#xff0c;在前面我们基本上很少有涉及这块的内容&#xff0c;最近正好在做文字相关的项目开发研究&#xff0c;就想着基于甲骨文的场景来开发对应的检测识别系统&#xff0c;首先看下实例效果&#xff1a; YOLOv7是 YOLO 系列最新推出的Y…

dubbo3适配springboot2.7.3

版本详细 <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>3.0.3</version> </dependency><parent><groupId>org.springframework.boot</groupId><artifactId&…

css 用flex做成田字型

哈喽&#xff0c;各位小伙伴&#xff01;今天给大家来css控制div完成田字型样式&#xff0c;来&#xff0c;看看下面的效果图&#xff1a; 一看就知道你们想要代码了&#xff0c;不急。代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head>&…

c++ 11 新特性 不同数据类型之间转换函数之reinterpret_cast

一.不同数据类型之间转换函数reinterpret_cast介绍 reinterpret_cast是C中的一种类型转换操作符&#xff0c;用于执行低级别的位模式转换。具体来说&#xff0c;reinterpret_cast可以实现以下功能&#xff1a; 指针和整数之间的转换&#xff1a;这种转换通常用于在指针中存储额…

【考研数学】武忠祥各阶段用书搭配+学习包

25考研数学全流程规划&#xff01;别等到二战了才知道这样学 本人属于基础很差相当于是零基础的考研党&#xff0c;经过一年备考成功上岸 中间花费了很多时间在考研数学备考信息检索上&#xff0c;写下这篇希望能帮助基础不好的学弟学妹们多节约一些时间复习&#xff01; 25…