【面试八股总结】超文本传输协议HTTP(一)

news/2024/7/26 11:04:05/文章来源:https://blog.csdn.net/rabbit_qi/article/details/137140326

参考资料 :小林Coding、阿秀、代码随想录 

一、 什么是HTTP协议?

HTTP是超文本传输协议 HyperText Transfer Protocol

特性:

  • 简单、灵活、易于扩展
  • 无状态:服务器不会记忆HTTP状态
  • 不安全通信使用明文,不验证通信方身份,无法的证明报文的完整性(可能被篡改)

二、 HTTP报文

1. HTTP请求报文

  • Request Line         请求行:请求方法 URL  HTTP协议版本号
  • Request  Headers 请求头:包含请求的附加信息,由key:value组成
  •                               空    行:分隔请求头和请求体
  • Request Body        请求体:承载多个请求参数的数据(可选)

2. HTTP响应报文

  • Status Line              状态⾏:HTTP协议版本 状态码 状态消息
  • Response Headers 响应头:以键值对的形式提供的额外信息
  •                                 空    行
  • Response Body       响应体:体包含服务器返回给客户端的实际数据

三、 HTTP请求方法

HTTP1.0 定义了三种请求⽅法: GET, POST 和 HEAD⽅法。

HTTP1.1 新增了六种请求⽅法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT ⽅法

方法描述
GET请求指定的⻚⾯信息,并返回实体主体。
POST

向指定资源提交数据进行处理请求(eg.提交表单/上传文件),数据包含在请求体中。

POST请求可能导致新的资源建立/已有资源的改变。

HEAD类似于GET,但返回相应中没有具体资源,用于获取情报头。
PUT从客户端向服务器传送的数据取代指定的文档的内容。
DELETE请求服务器删除指定页面。
CONNECTHTTP1.1 协议中预留给能够将连接改为管道方式的代理服务器,用于代理服务器。
OPTIONS允许客户端查看服务器的性能。
TRACE回显服务器收到的请求,主要用于测试或诊断。
PATCH对PUT方法的补充,用于对已知资源进行局部更新。

 GET和POST有什么区别?

GETPOST
概念获取数据,不影响服务器修改数据,会影响服务器
参数传递GET请求参数一般写在URL中,所以GET传送的数据量一般较小,不能大于2K,且只接受ASCII字符。POST请求参数一般放在请求体中,其请求信息没有长度限制和数据类型限制。
请求报文GET将请求的数据放在URL上,以?分割URL和传输数据,参数以&相连POST将数据放在HTTP的请求体内
安全

安全,因为GET为只读操作,不会对服务器数据产生影响。

不安全,POST方法会修改服务器上资源。
幂等幂等,每次GET都不会改变服务器资源。不幂等,多次提交数据会创建多个资源。
缓存机制

GET请求会被浏览器主动缓存,请求参数也被完整保留在浏览器历史记录中,且在浏览器中 GET 请求可以保存为书签。

POST不会被浏览器主动缓存,参数也不会被保留,也不能把POST请求作为书签。

时间消耗GET产生一个TCP数据包:浏览器会把Header和Data一并发送出去,服务器相应200(返回数据)POST产生两个TCP数据包:浏览器先发送Header,服务器响应100 continue,浏览器再发送Data,服务器响应200 ok(返回数据)
编码方式只能进行URL编码支持多种编码方式

补充说明:

 1)HTTP协议没有Body和URL的长度限制,对URL限制的大多是浏览器和服务器的原因。

 2)安全:HTTP协议中,安全是指请求方法不会破坏服务器上的资源。

 3)幂等:多次执行相同的操作,结果都相同。一次和多次请求某一个资源应该具有相同的作用,

四、 HTTP状态码

状态码分类具体🌰含义
1xx 信息100 Continue表明到⽬前为⽌都很正常,客户端可以继续发送请求或者忽略这个响应。
2xx 成功200 OK最常见的成功状态码,表示一切正常。如果是非 HEAD请求,服务器返回的响应头都会有 body 数据。
204 No Content请求已经成功处理,但是返回的响应报⽂不包含实体的主体部分。⼀般在只需要从客户端 往服务器发送信息,⽽不需要返回数据时使⽤。
206 Partial Content表示客户端进⾏了范围请求,响应报⽂包含由 Content-Range 指定范围的实体内 容。
3xx 重定向301 Moved Permanently 永久性重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。
302 Found临时性重定向
303 See Other和 302 有着相同的功能,但是 303 明确要求客户端应该采⽤ GET ⽅法获取资源。
304 Not Modified如果请求报⽂⾸部包含⼀些条件,例如:If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since,如果不满⾜条件,则服务器会返回 304 状态码。
307 Temporary Redirect临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST ⽅法改成 GET ⽅法。
4xx 客户端错误400 Bad Request请求报⽂中存在语法错误。
401 Unauthorized该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已 进⾏过⼀次请求,则表示⽤户认证失败。
403 Forbidden请求被拒绝。
404 Not Found请求的资源在服务器上不存在或未找到,所以无法提供给客户端。
5xx 服务器错误500 Internal Server Error服务器正在执⾏请求时发⽣错误。
501 Not Implemented客户端请求的功能还不支持。
502 Bad Gateway服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
503 Service Unavailable服务器暂时处于超负载或正在进⾏停机维护,现在⽆法处理请求。

五、 HTTP常见字段

分类字段名称含义
通⽤头部字段General HeadersCache-Control指定缓存策略
Connection控制连接的⾏为
Date指定⽇期和时间
请求头部字段Request HeadersAccept指定客户端能够接受的响应的MIME类型
Accept-Encoding指定客户端⽀持的内容编码⽅式
Authorization⽤于进⾏身份验证的凭据
Host指定请求的⽬标主机和端⼝
User-Agent标识客户端的⽤户代理(浏览器或其他⼯具)

响应头部字段

Response Headers

Content-Length 服务器返回数据时,带有该字段,表示回应的数据长度
Content-Type服务器回应时,告诉客户端本次数据的格式
Content-Enconding服务器返回的数据使用了什么压缩格式

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

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

相关文章

增强Java技能:使用OkHttp下载www.dianping.com信息

在这篇技术文章中,我们将探讨如何使用Java和OkHttp库来下载并解析www.dianping.com上的商家信息。我们的目标是获取商家名称、价格、评分和评论,并将这些数据存储到CSV文件中。此外,我们将使用爬虫代理来绕过任何潜在的IP限制,并实…

浅谈物联网高速公路智慧配电室系统构建方案

关键词:高速公路;智慧供配电;电力监控;配电室智能运维托管;安全隐患 0、引言 随着高速公路事业的不断发展和路网的不断延伸,传统的管理方式已难以满足日益增长的需求,动态管理和安全隐患预警成…

Java项目:85 springboot智能物流管理系统

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本美发门店管理系统有管理员…

SpringBoot | Spring Boot“整合Redis“

目录: 1. Redis 介绍2. Redis 下载安装3. Redis “服务开启”和“连接配置”4. Spring Boot整合Redis的“前期准备” :① 编写实体类② 编写Repository 接口③ 在“全局配置文件”中添加 “Redis数据库” 的 “相关配置信息” 5. Spring Boot整合“Redis” (案例展示) 作者简介…

QA测试开发工程师面试题满分问答6: 如何判断接口功能正常?从QA的角度设计测试用例

判断接口功能是否正常的方法之一是设计并执行相关的测试用例。下面是从测试QA的角度设计接口测试用例的一些建议,包括功能、边界、异常、链路、上下游和并发等方面: 通过综合考虑这些测试维度,并设计相应的测试用例,可以更全面地评…

设计模式之装饰模式精讲

概念:动态地给一个对象添加一些额外的职责。 装饰器模式侧重于在不改变接口的前提下动态地给对象添加新功能,保持对象结构的透明性,客户端无感知。 以一个咖啡制作和装饰的例子来帮助大家理解: public interface Coffee {double…

esp32中vscode的开发环境

vscode中安装esp32开发环境请参考:CSDN 1、调出esp32的控制面板View ->Command Paletter,或者快捷键(ctrshitp) 调出esp-idf的样例工程 选择ESP-IDF所在的安装路径 选择一个样例工程,作为工程模板 创建的新工程如…

docker部署DOS游戏

下载镜像 docker pull registry.cn-beijing.aliyuncs.com/wuxingge123/dosgame-web-docker:latestdocker-compose部署 vim docker-compose.yml version: 3 services:dosgame:container_name: dosgameimage: registry.cn-beijing.aliyuncs.com/wuxingge123/dosgame-web-docke…

电子积木方案开发商

东莞市酷得智能科技有限公司电子积木方案开发商 提供消费电子解决方案、提供IC技术支持,全国线上线下服务 积木小车底层驱动开发过程主要涉及到以下几个方面: 首先,需要对小车底盘结构、硬件、模块等有深入的了解。底盘承载着机器人定位、导…

Android adb ime 调试输入法

目录 前言列出所有输入法仅列出输入法 id列出所有输入法的所有信息 启用/禁用 输入法启用输入法禁用输入法 切换输入法还原输入法 前言 安装多个输入法后&#xff0c;可以在设置里进行切换。 既然是开发&#xff0c;能用命令就就命令~ ime 帮助说明&#xff1a; ime <c…

入门级深度学习主机组装过程

一 配置 先附上电脑配置图&#xff0c;如下&#xff1a; 利用公司的办公电脑对配置进行升级改造完成。除了显卡和电源&#xff0c;其他硬件都是公司电脑原装。 二 显卡 有钱直接上 RTX4090&#xff0c;也不能复用公司的电脑&#xff0c;其他配置跟不上。 进行深度学习&…

面试题 之 vue

1.vue里怎样实现双向数据绑定&#xff1f; Viewmodel 中的Domlisteners 工具会帮我们检测页面上Dom元素的变化&#xff0c;如果有变化&#xff0c;则更改Model中的数据&#xff0c;更新model中的数据时&#xff0c;数据事件绑定工具会帮我们更新页面中的Dom元素 2.Vue的响应式原…

59 使用 uqrcodejs 生成二维码

前言 这是一个最近的一个来自于朋友的需求, 然后做了一个 基于 uqrcodejs 来生成 二维码的一个 demo package.json 中增加以依赖 "uqrcodejs": "^4.0.7", 测试用例 <template><div class"hello"><canvas id"qrcode&qu…

数据库-root密码丢失的重置方案(win11环境)

当在windows系统中安装的mysql由于操作不当&#xff0c;或者密码遗忘&#xff0c;今天测试了一下&#xff0c;可以用以下方法重置root的密码。 mysqlwindows环境root密码重置问题 在win10/11环境下mysql8密码遗忘后的重置密码方案。 停止mysql服务 查找windows中的mysql服务名称…

【讲解下Gitea】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

day02-SpringCloud02(Nacos、Feign、Gateway)

1.Nacos 配置管理 Nacos 除了可以做注册中心&#xff0c;同样可以做配置管理来使用。 1.1.统一配置管理 当微服务部署的实例越来越多&#xff0c;达到数十、数百时&#xff0c;逐个修改微服务配置就会让人抓狂&#xff0c;而且很容易出错。我们需要一种统一配置管理方案&#x…

图论做题笔记:dfs

Leetcode - 797&#xff1a;所有可能的路径 题目&#xff1a; 给你一个有 n 个节点的 有向无环图&#xff08;DAG&#xff09;&#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出&#xff08;不要求按特定顺序&#xff09; graph[i] 是一个从节点 i 可以访问的所有节…

HTTPS跟HTTP有区别吗?

HTTPS和HTTP的区别&#xff0c;白话一点说就是&#xff1a; 1. 安全程度&#xff1a; - HTTP&#xff1a;就像是你和朋友面对面聊天&#xff0c;说的话大家都能听见&#xff08;信息明文传输&#xff0c;容易被偷听&#xff09;。 - HTTPS&#xff1a;就像是你们俩戴着加密耳机…

C#属性显示

功能&#xff1a; 显示对象的属性&#xff0c;包括可显示属性、可编辑属性、及不可编辑属性。 1、MainWindow.xaml <Window x:Class"FlowChart.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://sche…

AI 论道|极狐GitLab 客户私享会上海站成功举办

3 月 22 日下午&#xff0c;极狐GitLab 在上海办公室举办了客户私享会&#xff0c;邀请了来自多个行业的多家客户&#xff0c;围绕 AI 提升研发效率的道法术器进行了充分交流。整个交流时长达两个多小时。 极狐GitLab 战略业务与区域发展副总裁何庆出席了此次活动并致开场辞。他…