4.16--计算机网络之HTTP篇之常见面试题篇--(复习+深入)---好好沉淀,加油呀

news2024/12/23 14:07:45

1.HTTP 基本概念

1.HTTP 是什么?
HTTP 是超文本传输协议

HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。

「HTTP 是用于从互联网服务器传输超文本到本地浏览器的协议」,这种说法正确吗?

这种说法是不正确的。因为也可以是「服务器< – >服务器」,所以采用两点之间的描述会更准确。

2.HTTP 常见的状态码有哪些?
在这里插入图片描述
1xx 类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少
2xx 类状态码表示服务器成功处理了客户端的请求

「200 OK」是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据
「204 NoContent」也是常见的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。
「206 Partial Content」是应用于 HTTP 分块下载或断点续传,表示响应返回的 body数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。

3xx 类状态码表示客户端请求的资源发生了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向

「301 Moved Permanently」表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。

「302 Found」表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问

301 和 302 都会在响应头里使用字段 Location,指明后续要跳转的 URL,浏览器会自动重定向新的 URL。

「304 NotModified」不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,也就是告诉客户端可以继续使用缓存资源,用于缓存控制

4xx 类状态码表示客户端发送的报文有误,服务器无法处理,也就是错误码的含义
「400 Bad Request」表示客户端请求的报文有错误,但只是个笼统的错误。

「403 Forbidden」表示服务器禁止访问资源,并不是客户端的请求出错。

「404 Not Found」表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端。

5xx 类状态码表示客户端请求报文正确,但是服务器处理时内部发生了错误,属于服务器端的错误码。

「500 Internal Server Error」与 400 类型,是个笼统通用的错误码,服务器发生了什么错误,我们并不知道。
「501Not Implemented」表示客户端请求的功能还不支持,类似“即将开业,敬请期待”的意思。
「502 BadGateway」通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
「503 Service Unavailable」表示服务器当前很忙,暂时无法响应客户端,类似“网络服务正忙,请稍后重试”的意思。

3.HTTP 常见字段有哪些?

1.Host 字段:客户端发送请求时,用来指定服务器的域名
有了 Host 字段,就可以将请求发往「同一台」服务器上的不同网站

2.Content-Length 字段:服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据长度

3.Connection 字段:常用于客户端要求服务器使用「HTTP 长连接」机制,以便其他请求复用
HTTP/1.1 版本的默认连接都是长连接,但为了兼容老版本的 HTTP,需要指定 Connection 首部字段的值为 Keep-Alive。

4.Content-Type 字段:用于服务器回应时,告诉客户端,本次数据是什么格式

5.Content-Encoding 字段:说明数据的压缩方法。表示服务器返回的数据使用了什么压缩格式

2.GET 与 POST

根据 RFC 规范,GET 的语义是从服务器获取指定的资源;
GET 请求的参数位置一般是写在 URL 中,URL 规定只能支持 ASCII,所以 GET 请求的参数只允许 ASCII 字符 ,而且浏览器会对 URL 的长度有限制(HTTP协议本身对 URL长度并没有做任何规定)

根据 RFC 规范,POST 的语义是根据请求负荷(报文body)对指定的资源做出处理;
POST 请求携带数据的位置一般是写在报文 body 中,body 中的数据可以是任意格式的数据,只要客户端与服务端协商好即可,而且浏览器不会对 body 大小做限制

安全和幂等的概念:

1.在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源。
2.所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的

如果从 RFC 规范定义的语义来看:

1.GET 方法就是安全且幂等的,因为它是「只读」操作,无论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的。

所以,可以对 GET 请求的数据做缓存,这个缓存可以做到浏览器本身上(彻底避免浏览器发请求),也可以做到代理上(如nginx),而且在浏览器中 GET 请求可以保存为书签。

2.POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的。

所以,浏览器一般不会缓存 POST 请求,也不能把 POST 请求保存为书签。

小结:

GET 的语义是请求获取指定的资源。GET 方法是安全、幂等、可被缓存的。
POST 的语义是根据请求负荷(报文主体)对指定的资源做出处理,具体的处理方式视资源类型而不同。POST 不安全,不幂等,(大部分实现)不可缓存

但是实际过程中:

1.可以用 GET 方法实现新增或删除数据的请求,这样实现的 GET 方法自然就不是安全和幂等。
2.可以用 POST 方法实现查询数据的请求,这样实现的 POST 方法自然就是安全和幂等。

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

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

相关文章

Android -- OkHttp的简单使用和封装

OkHttp的封装 由于是封装我们可以吧OKHttp和Gson给结合起来&#xff0c;那么我们在gradle文件添加以下的依赖 1 2 3 compile "com.squareup.okhttp:okhttp:2.4.0" compile com.squareup.okio:okio:1.5.0 compile "com.google.code.gson:gson:2.8.0" ①Ca…

Windows Subsystem for Android (WSA) 下载:在 Windows 11 上运行 Android 应用 (April 2023)

适用于 Android™️ 的 Windows 子系统&#xff0c;2023 年 4 月更新 (April 2023) 请访问原文链接&#xff1a;https://sysin.cn/blog/wsa/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Windows 11 上适用于 Android™ 的 …

在Windbg中设置断点追踪打开C++程序远程调试开关的模块

目录 1、Windbg动态调试 2、在Windbg中设置断点 2.1、在函数入口处设置断点 2.2、在函数内部某一行上设置断点 3、设置断点跟踪对打开远程调试开关接口的调用 3.1、编写演示代码 3.2、在Windbg中设置调用SetRemoteDebugOn接口的断点进行跟踪 4、最后 VC常用功能开发汇总…

这一次,吃了Redis的亏,也败给了GPT

关注【离心计划】&#xff0c;一起离开地球表面 背景 组内有一个系统中有一个延迟任务的需求&#xff0c;关于延迟任务常见的做法有时间轮、延迟MQ还有Redis Zset等方案&#xff0c;关于时间轮&#xff0c;这边小苏有一个大学时候做的demo&#xff1a; https://github.com/JA…

Cacti监控远程linux机器配置(被监控端)

一、被监控机安装snmp yum -y install snmp二、被监控机的配置 vi /etc/snmp/snmpd.conf做以下更改&#xff1a; 1、找到com2sec notConfigUser default public 改为&#xff1a;com2sec notConfigUser 192.168.1.1(改成监控服务器的ip) public 2、找到acce…

【hello Linux】进程概念(上)

目录 1.操作系统&#xff08;OS&#xff09; 2. 进程 2.1 基本概念 2.2 task_struct 内的属性字段 2.3 查看进程 2.4 查看进程的PID及PPID 2.5 杀死进程 2.6 以文件的方式查看进程 2.7 查看退出码 2.8 上下文数据 下面介绍两个较为方便的快捷键&#xff1a; Linux&#x1f337;…

语义分割新范式:上海 AI Lab 联合北邮、商汤提出StructToken

来源&#xff1a;投稿 作者&#xff1a;xin 编辑&#xff1a;学姐 Motivation 本文将当前语义分割的方法分为两类&#xff0c;一类是静态逐像素分类方法&#xff08;static per-pixel classification&#xff09;&#xff0c;另一类为动态逐像素分类方法&#xff08;dynamic p…

Ubuntu备份与恢复

Ref: create-backup-image-of-running-ubuntu Linux中我们有权访问所有系统文件&#xff0c;因此&#xff0c;最简单且直接的备份方法是将整个根目录打包&#xff1a; sudo su tar -cpzf /path/to/backup.tar.gz --exclude/tmp --one-file-system /其中-cpzf 表示建立压缩归档…

MQTT 持久会话与 Clean Session

1. 会话&#xff08;session&#xff09; 我们将从客户端向服务端发起 MQTT 连接请求开始&#xff0c;到连接中断直到会话过期为止的消息收发序列称之为会话。会话是服务端和客户端的一个连接&#xff0c;进行消息交互前必须先建立会话。 2. 会话的生命周期 MQTT v3.1.1会话…

003_螺旋矩阵

力扣54和59题 54.顺时针打印矩阵 题目&#xff1a; 思路&#xff1a;将矩阵分为若干层&#xff0c;首先打印最外层的元素&#xff0c;然后一直往里打印 对于每层&#xff0c;从左上方开始以顺时针的顺序遍历所有元素。假设当前层的左上角位于(top,left)&#xff0c;右下角位于…

Axios请求(对于ajax的二次封装)——Axios取消请求、请求体编码

Axios请求&#xff08;对于ajax的二次封装&#xff09;——Axios取消请求、请求体编码知识回调&#xff08;不懂就看这儿&#xff01;&#xff09;场景复现核心干货axios取消请求AbortControllerCancelToken deprecated请求体编码浏览器qs库编码数据ES6库方法node.jsQuery stri…

【神经网络】tensorflow实验3--NumPy科学计算库

目录 1. 实验目的 2. 实验内容 3. 实验过程 题目一&#xff1a; ① 代码 ② 实验结果 题目二&#xff1a; ① 代码 ② 实验结果 题目三&#xff1a; ​编辑 ① 代码 ② 实验结果 5. 实验小结 ① 实验过程中遇到了哪些问题&#xff0c;你是如何解决的&#xff1f; …

Android引入Apollo(阿波罗)

程序猿日常 记Android项目引入Apollo(阿波罗)上源码 apollo开发分支 应用 Apollo(阿波罗)客户端会管理好应用的后台GraphQL数据 之前网络请求使用RetrofitOkHttp 改成使用ApolloOkHttp 引入 1.对应的module的build.gradle中添加 id("com.apollographql.apollo3&qu…

【计算机系统概论Yale.patt】第一章

文章目录1. 计算机是简单部件的系统组合1.1 计算机组成1.1.1 编码体系1.1.2 晶体管构建微处理器1.1.3 冯诺依曼机1.1.4 LC-3机(冯诺依曼机实现)1.1.5 LC-3编程机器语言编程汇编语言编程输入输出信息问题两个重要机制栈和数据转换示例&#xff1a;计算器1.2 两个重要理念1.2.1 抽…

Linux基础篇(三)常见指令

目录 一、创建文件和目录 二、命令详解 0. 命令和选项 1. ls命令 2. cd命令 3. touch命令 4. mkdir命令 5. tree命令 6. rmdir命令 7. rm命令 8. man 9. nano 10. cat命令 11. cp 命令 12. mv 命令 13. echo命令 14. more命令 15. less命令 16. Ctrl C 17. head 命令 18. tail…

台灯的种类有哪些?国内热门护眼灯品牌推荐

台灯是我们日常生活中常见的电器之一&#xff0c;台灯不仅可以为人们照明&#xff0c;还可以用来家居装饰&#xff0c;根据人们不用的需求&#xff0c;台灯的种类也很多&#xff0c;有书房台灯、读写台灯、工艺台灯。 书房台灯&#xff1a;灯光的局部照明效果&#xff0c;以书写…

禅道OpenAI更新至1.2版本,超多实用功能惊喜上线!

广受欢迎的禅道OpenAI插件近日成功发布&#xff0c;截至目前已更新至1.2版本。 截至本版本发布&#xff0c;禅道OpenAI已经拥有了神奇海螺&#xff08;ChatGPT聊天&#xff09;、需求润色、任务润色、Bug润色及本次的需求一键生成用例功能&#xff0c;仍有更多实用的新功能正在…

Sentinel 工作主流程

Overview 在 Sentinel 里面&#xff0c;所有的资源都对应一个资源名称以及一个 Entry。Entry 可以通过对主流框架的适配自动创建&#xff0c;也可以通过注解的方式或调用 API 显式创建&#xff1b;每一个 Entry 创建的时候&#xff0c;同时也会创建一系列功能插槽&#xff08;…

2023年第1季社区Task挑战赛开启,等你来战!

社区Task挑战赛是面向社区开发者开展的代码或教程征集活动。该挑战赛为社区中热爱FISCO BCOS及周边组件的开发者提供了探索区块链技术、挑战技术难题的舞台。该挑战赛去年在社区成功举办了3季&#xff0c;共吸引了数百名开发者报名。 前3季都有哪些有趣的作品&#xff1f; 在…

【图数据挖掘】— 子图同构问题、单射函数和双射函数、同构(isomorphic)和同态(homomorphism)

子图同构问题 子图同构&#xff08;Subgraph Isomorphism&#xff09;是指在图论中&#xff0c;两个图之间是否存在一种关系&#xff0c;使得其中一个图的顶点集合和边集合可以通过对应的方式映射到另一个图的顶点集合和边集合上&#xff0c;且保持原来的边和顶点的关系不变。…