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

2024-04-03 13:52

本文主要是介绍【面试八股总结】超文本传输协议HTTP(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考资料 :小林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(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/873096

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。