版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HTTP协议高频面试题及详细答案(实战版)一、HTTP基础概念1.简单说说你对HTTP协议的理解HTTP是超文本传输协议,是应用层的、基于请求-响应模式的无状态协议,也是Web数据交互的核心协议。它主要用于客户端和服务器之间的数据传输,绝大多数网页、接口请求都是基于HTTP完成的。整体工作逻辑很简单:客户端发起请求,服务器接收并处理后,返回响应结果,单次请求响应闭环后连接会根据规则断开或复用。同时HTTP是明文传输,不具备加密、身份校验能力,安全性较弱,所以后续衍生出了HTTPS协议弥补短板。2.HTTP无状态是什么意思?怎么解决无状态问题?无状态含义:服务器不会记录客户端的任何访问状态,每一次HTTP请求都是独立的,服务器无法识别两次请求是否来自同一个客户端。哪怕是同一用户连续发送请求,服务器都会当成全新请求处理。解决方案:通过客户端存储标识+服务端校验的方式维持会话状态,常用三种方式:Cookie:服务器下发小段文本数据,存储在客户端浏览器,后续每次请求会自动携带,用于标识用户身份。Session:数据存储在服务器端,客户端仅存储唯一的SessionID(通常存在Cookie中),请求时携带ID,服务器匹配对应会话数据。Token:后端生成加密令牌返回客户端,客户端存储后,每次请求在请求头携带Token,后端校验有效性,无服务端存储压力,适合前后端分离、分布式场景。3.HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3的核心区别HTTP/1.0:默认短连接,一次请求响应完成后立即断开TCP连接;不支持请求头缓存协商,性能差,每次请求都需要重新建立连接。HTTP/1.1:默认长连接(Connection:keep-alive),一次TCP连接可处理多次请求;新增缓存协商机制、断点续传、虚拟主机功能;缺点是存在队头阻塞,同一连接下前面的请求未完成,后续请求只能排队等待。HTTP/2:基于TCP协议,解决队头阻塞问题;支持多路复用,一个连接可并行处理多个请求;头部压缩、服务器主动推送资源,大幅提升传输效率。HTTP/3:基于UDP协议,彻底规避TCP队头阻塞;连接建立速度更快,无需三次握手、四次挥手;弱网、移动网络环境下稳定性和速度更好,目前主流网站已逐步普及。二、HTTP请求与响应结构4.完整的HTTP请求报文由哪几部分组成?分为四部分,缺一不可:请求行:包含请求方法、请求URL、协议版本,例:GET/index.htmlHTTP/1.1请求头:客户端携带的各类参数,比如Host、User-Agent、Cookie、Content-Type、Authorization等空行:分隔请求头和请求体,固定格式,必须存在请求体:请求携带的数据,POST、PUT等方法常用,GET方法无请求体5.完整的HTTP响应报文由哪几部分组成?状态行:协议版本、状态码、状态描述,例:HTTP/1.1200OK响应头:服务器返回的配置信息,比如Cache-Control、Set-Cookie、Content-Type、Location等空行:分隔响应头和响应体响应体:服务器返回的真实数据,如网页代码、JSON数据、文件资源等6.GET和POST方法的核心区别(面试高频)从实际开发和面试核心考点总结,核心区别如下:参数位置不同:GET参数拼接在URL后面,POST参数放在请求体中。缓存机制不同:GET请求默认会被浏览器缓存,POST默认不缓存。数据长度限制:GET受限于浏览器URL长度限制,无法传输大量数据;POST无明确长度限制,适合传大数据。安全性:GET参数暴露在地址栏和历史记录中,安全性低;POST参数隐藏在请求体,相对更安全。书签与历史记录:GET可保存书签、留存历史记录;POST无法保存书签,不会留存请求数据。语义规范:GET用于查询、获取数据,无副作用;POST用于提交、新增、修改数据,会改变服务器资源状态。补充误区:很多人说GET请求没有请求体,规范上GET可以带请求体,但开发中绝对不使用,部分服务器会直接丢弃GET请求体数据。7.常见的HTTP请求方法有哪些?各自语义是什么?GET:查询资源,只读操作,幂等POST:提交资源、新增数据,非幂等PUT:更新、替换完整资源,幂等PATCH:局部更新资源,只修改部分字段,幂等DELETE:删除服务器资源,幂等HEAD:只获取响应头,不返回响应体,用于检测资源是否存在、是否更新OPTIONS:获取服务器支持的请求方法,常用于跨域预检请求补充幂等性:多次发起相同请求,对服务器资源的影响和一次请求完全一致。三、HTTP状态码(高频必考)8.HTTP状态码分为哪五类?各自含义1xx信息性状态码:请求已接收,继续处理,临时响应,如100(继续请求)2xx成功状态码:请求正常处理完成3xx重定向状态码:需要客户端进一步操作,跳转新地址4xx客户端错误:请求参数、权限、地址等客户端问题,服务器无法处理5xx服务端错误:服务器程序异常、配置错误,请求本身无问题9.高频状态码详细解释2xx成功200OK:请求成功,服务器正常返回数据201Created:资源创建成功,常用于POST新增接口204NoContent:请求成功,无响应体,常用于删除接口3xx重定向301永久重定向:资源永久迁移,浏览器会缓存跳转地址,后续直接访问新地址302临时重定向:资源临时迁移,不缓存,每次请求都会重新跳转304NotModified:资源未修改,命中缓存,直接使用本地缓存数据,无需重新下载4xx客户端错误400BadRequest:请求参数格式错误、参数缺失,服务器无法解析401Unauthorized:未登录、未携带令牌,身份未认证403Forbidden:已认证,但无访问权限,禁止访问404NotFound:请求的URL资源不存在405MethodNotAllowed:请求方法不支持,比如接口只支持GET,客户端用POST请求429TooManyRequests:请求过于频繁,触发限流5xx服务端错误500InternalServerError:服务器代码异常、逻辑报错,通用服务端错误502BadGateway:网关/反向代理收到后端服务器无效响应503ServiceUnavailable:服务器过载、停机维护、服务不可用504GatewayTimeout:网关请求后端服务超时四、HTTP缓存机制(核心难点)10.详细说说HTTP缓存流程,强缓存和协商缓存区别HTTP缓存是浏览器为减少重复请求、提升加载速度的机制,优先级:强缓存>协商缓存,命中强缓存直接用本地资源,不发请求;强缓存失效后,走协商缓存校验。1.强缓存(无需请求服务器)通过响应头控制,浏览器判断资源是否在有效期内,有效则直接使用本地缓存,返回200(fromcache)。Cache-Control:现代主流,优先级最高。max-age=xxx表示资源缓存有效时长(秒)。Expires:旧版机制,返回绝对过期时间,受客户端本地时间影响,准确性差,基本被Cache-Control替代。2.协商缓存(需要请求服务器校验)强缓存过期后,浏览器携带资源标识请求服务器,服务器判断资源是否更新,未更新则返回304,使用本地缓存;已更新则返回新资源和200。Last-Modified/If-Modified-Since:基于文件最后修改时间校验。缺点:只能精确到秒,1秒内多次修改无法识别;修改时间变了但内容没变,也会重新下载。ETag/If-None-Match:基于文件内容生成唯一指纹,优先级高于修改时间,精准度更高,解决了时间校验的缺陷。11.如何彻底清除HTTP缓存?前端:页面强制刷新(Ctrl+F5),跳过缓存重新请求资源;服务端:设置Cache-Control:no-cache、no-store、must-revalidate,禁止缓存、强制校验;工程化:静态资源打包加哈希后缀,文件内容变化则哈希变化,浏览器识别为新资源,自动重新加载。五、HTTPS相关面试题12.HTTP和HTTPS的区别端口不同:HTTP默认80端口,HTTPS默认443端口;传输方式:HTTP明文传输,数据极易被抓包、篡改;HTTPS加密传输,数据安全;安全性:HTTP无校验、无加密、无身份认证;HTTPS具备加密、防篡改、身份校验能力;性能:HTTPS需要握手、加密解密,相比HTTP有轻微性能损耗;证书:HTTP无需证书,HTTPS需要CA机构颁发的数字证书。13.HTTPS工作原理?SSL/TLS握手流程HTTPS=HTTP+SSL/TLS,在HTTP和TCP之间加了一层安全加密校验,核心是四次握手(简化版):客户端握手请求:客户端向服务器发送支持的加密套件、随机数;服务器响应:服务器选定加密套件,返回服务器随机数、数字证书、公钥;客户端校验证书+生成密钥:客户端校验证书合法性,通过后生成随机预备密钥,用服务器公钥加密后发送给服务器;双方生成会话密钥:服务器用私钥解密获取预备密钥,客户端和服务器通过三个随机数,各自生成一致的会话密钥,后续通信均通过该密钥对称加密传输。握手完成后,后续所有数据传输都是加密传输,防止被抓包篡改。14.对称加密和非对称加密在HTTPS中的作用非对称加密:用于握手阶段,公钥加密、私钥解密,安全传输会话密钥,解决密钥传递安全问题;加密速度慢,不适合传输大量数据。对称加密:握手完成后,正式数据传输使用,加解密速度快、效率高,适合海量网页、接口数据传输。HTTPS结合两者优势:非对称加密保密钥安全,对称加密保传输效率。六、跨域与请求常见问题15.什么是跨域?为什么浏览器会跨域拦截?跨域是指浏览器发起的请求,协议、域名、端口三者任意一个和当前页面地址不一致,就会触发跨域。拦截原因是浏览器同源策略,这是浏览器的安全机制,防止恶意网站窃取本地数据、篡改页面信息,规避安全风险。注意:跨域是浏览器的限制,服务器之间互相请求不存在跨域问题。16.常见的跨域解决方案CORS跨域资源共享:后端配置响应头Access-Control-Allow-Origin,主流生产方案,简单稳定;代理跨域:前端配置webpack/vite代理、Nginx反向代理,同源访问代理服务,由代理转发请求;JSONP:利用script标签不受跨域限制的特点,只支持GET请求,兼容性好但功能单一,现在很少用;WebSocket:不受同源策略限制,适合实时通信场景。17.什么是预检请求(OPTIONS)?什么时候会触发?浏览器在发送真实跨域请求前,会先发送一次OPTIONS预检请求,询问服务器是否允许该跨域请求,服务器校验通过后,才会发起正式请求。触发场景:非简单请求都会触发预检,比如:请求方法为PUT、DELETE、PATCH等;请求头携带自定义头部(如Token);Content-Type为application/json等非普通格式。简单请求(GET、POST、HEAD+普通请求头)不会触发预检。七、进阶面试题18.什么是TCP队头阻塞?HTTP/1.1如何解决?HTTP/1.1长连接下,一个TCP连接可以处理多个请求,但请求是串行的。如果队列中第一个请求响应缓慢、卡顿,后面所有请求都会被阻塞排队,这就是队头阻塞。HTTP/1.1没有彻底解决该问题,只能通过多域名并行请求、开启多个TCP连接缓解,HTTP/2多路复用才彻底解决了该问题。19.Cookie的SameSite属性作用SameSite是Cookie的安全属性,用于防止CSRF跨站请求伪造攻击,控制Cookie在跨站请求时是否携带。Strict:严格模式,仅同站请求携带Cookie,跨站完全不携带;Lax:默认模式,大部分跨站请求不携带,链接跳转等少数场景携带;None:所有场景
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江西省乐平市高三物理下册期末考试模拟试卷含答案
- 2026年江苏省句容市高一化学上册期末考试模拟检测卷及参考答案【A卷】
- 2026年山东省莱阳市高三生物下册期末考试模拟卷及答案
- 2026年广东省普宁市高一历史下册期末考试模拟试卷含答案(研优卷)
- 2026年黑龙江省五大连池市高三生物上册期末考试模拟测试卷(含答案)
- 2026年河南省辉县市高三历史上册期末考试测试卷(基础题)附答案
- 2026年广东省阳春市高三物理下册期末考试模拟试卷及答案
- 2026年黑龙江省虎林市高一化学上册期末考试模拟试卷附答案AB卷
- 2026年湖南省冷水江市高一化学上册期末考试模拟考试卷含完整答案(网校专用)
- 2026年山东省诸城市高三历史上册期末考试考试卷及参考答案(完整版)
- 2026年检察院书记员考试试题及答案
- 2026年网络舆情研判处置人员考核题库
- 《中华人民共和国传染病防治法》题库(答案+解析)
- 2026统编版九年级历史上册全册教材问题答案
- 小型水库除险加固项目地质灾害危险性评估报告
- 施工现场污水沉淀池设计
- 2026 年 NICU 早产儿精细化护理管理课件
- 中药炮制工职业道德
- MOOC 研究生学术规范与学术诚信-南京大学 中国大学慕课答案
- 慢性伤口护理健康宣教课件
- 人民币收藏培训知识
评论
0/150
提交评论