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

目录

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.hqwc.cn/news/520287.html

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

相关文章

企业财务分析该怎么做?重点分析哪些财务指标?

在企业经营管理的过程中&#xff0c;财务分析是评估当前企业或特定部门财务状况和绩效的过程&#xff0c;这一过程通常涉及对财务报表&#xff08;如资产负债表、利润表和现金流量表&#xff09;进行定量和定性的评估&#xff0c;以便为盈利能力、偿债能力、现金流动性和资金稳…

【计算机系统】2.进程管理

【计算机系统】2.进程管理 这个章节十分的重要&#xff0c;作业也要好好做&#xff0c;因为我学的是后端&#xff0c;学计算机进程的处理对于搞并发来说十分有用。 提出问题 6、试从动态性、并发性和独立性上比较进程和程序。19、为什么要在OS中引入线程?A.请用信号量解决以下…

如何搭建财务数据运营体系:基于财务五力模型的分析

在当今复杂多变的商业环境中,财务数据作为企业决策的重要参考依据,其运营体系的搭建显得尤为关键。一个健全、高效的财务数据运营体系不仅能够为企业提供准确的财务数据支持,还能帮助企业在激烈的市场竞争中保持领先地位。基于财务五力模型的分析,我们可以从收益力、安定力…

第三方软件测试报告有效期是多久?专业软件测试报告获取

第三方软件测试报告是在软件开发过程中&#xff0c;由独立的第三方机构对软件进行全面测试和评估后发布的报告。这些第三方机构通常是与软件开发商和用户无关的专业技术机构&#xff0c;具备丰富的测试经验和专业知识。    第三方测试报告具有以下几个好处&#xff1a;   …

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

一.不同数据类型之间转换函数const_cast介绍 const_cast是C11中引入的一种类型转换操作符&#xff0c;用于修改类型的const或volatile属性。const_cast的主要用途是移除对象的常量性&#xff0c;它是唯一具有此能力的C风格的转型操作符。在C11中&#xff0c;const_cast可以完成…

YoloV8改进策略:Block改进|自研Block,涨点超猛|代码详解|附结构图

涨点效果 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.993,mAP50-95由0.737涨到0.757,涨点明显! 参考模型 参考的Block,如下图: 我对Block做了修改,修改后的结构图如下: 代码详解 from timm.models.layers import DropPathfrom torch import Tensor def …

黑马java-JavaWeb-MySQL基本操作

1.JavaWeb&#xff1a; 用java技术来解决相关web互联网领域的技术栈 2.数据库&#xff1a; 存储数据的仓库&#xff0c;数据是有组织的进行存储 英文&#xff1a;DataBase&#xff0c;简称DB 3.数据库管理系统&#xff1a; 管理数据库的大型软件 英文&#xff1a;DataBase Mana…

链表|707.设计链表

力扣题目链接 typedef struct MyLinkedList {int val;struct MyLinkedList* next; }MyLinkedList;/** Initialize your data structure here. */MyLinkedList* myLinkedListCreate() {//这个题必须用虚拟头指针,参数都是一级指针,头节点确定后没法改指向了!!!MyLinkedList* he…

力扣大厂热门面试算法题 - 矩阵

解数独&#xff0c;单词搜索&#xff0c;被围绕的区域。每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.07 可通过leetcode所有测试用例。 目录 37. 解数独 解题思路 完整代码 Python Java 79. 单词搜索 解题思路 完整代码 Python…

.Net6使用JWT认证和授权

文章目录 目的实现案例一.项目所需包&#xff1a;二.配置项目 appsettings.json 文件&#xff1a;三.创建Model文件夹&#xff0c;添加AppConfig类和UserRole类1.AppConfig类获取appsettings.json文件中的值2.UserRole类用于区分用户信息和权限 四.主体代码案例&#xff1a;1.L…

软考66-上午题-【面向对象技术】-小结+杂题

一、杂题 真题1&#xff1a; 真题2&#xff1a; 真题4&#xff1a; 真题5&#xff1a; 真题6&#xff1a; 二、面向对象设计-总结 2-1、考题分析 选择题&#xff1a;11道&#xff08;11分&#xff09; 综合分析题&#xff1a;2道&#xff08;30分&#xff09; java程序设计…

MySQL 存储过程(超详细)

一、什么是存储过程&#xff1f; 存储过程可称为过程化SQL语言&#xff0c;是在普通SQL语句的基础上增加了编程语言的特点&#xff0c;把数据操作语句(DML)和查询语句(DQL)组织在过程化代码中&#xff0c;通过逻辑判断、循环等操作实现复杂计算的程序语言。换句话说&#xff0c…