面试题:HTTP请求和响应(详细解析)

在这里插入图片描述
——————————————————————————————————————————————————————————————————————

HTTP请求

在这里插入图片描述

1.首行

HTTP请求首行由方法、URL、版本号组成,主要对方法和URL进行讲解,版本号就是所使用HTTP协议版本具体可参考: HTTP协议基本介绍

• 方法(method)

首先来了解下方法都有哪些、有什么作用,在请求中主要以GET、POST方法为主

方法说明
GET获取资源(获取网页内容)
POST提交资源(上传图片)
DELETE删除资源
PUT传输或更新服务器文件
HEAD获取报头和GET方法类似
TRACE追踪路径(主要用于调试)
OPTIONS查询服务器支持HTTP方法
CONNECT建立隧道(通常用于代理)
LINK/UNLINK建立和资源链接/断开资源连接
GET

应用场景:
GET方法通常用于获取资源,传递的参数以键值对(key : value)形式在URL后面传递给服务器,所获取的内容可以被缓存减少打开时间提高性能。同样GET请求成幂等的,因此可以存储在书签🔖、浏览器历史中。
特点:
• GET请求获取资源
• GET请求body部分为空
• GET请求能被缓存、保存书签、存放在浏览器历史
• GET请求具有幂等性,不会被改变
注意:
• GET请求有长度限制,不同浏览器对长度要求不同
• GET请求参数在URL中并不安全,不适合传输账号、密码等重要信息

POST

应用场景:
POST请求通常用用于提交数据,例如上传图片、上传文件、提交表单等,与GET不同的是上传的内容并不在URL中,而是在body里面以html、josn等格式进行传递,因此并无长度限制。POST非幂等不能作为书签🔖存储。

特点:

• POST请求多用于提交数据
• POST请求内容在body中传输
• POST请求没有长度限制,支持多种格式的数据进行提交
• POST请求非幂等性,不能被缓存、保存书签、存放在浏览器历史

• 网址(URL)

定义:URL(统一资源定位符,Uniform Resource Locator)由多个部分组成,也就是我们常说的网址,在互联网上每个资源都有唯一的位置,通过URL就可以找到该资源的信息。

基本格式:
🌰:https://user:password@www.example.com:8080/path/to/resource?query1=value1&query2=value2#fragment

在这里插入图片描述
• 协议:访问该资源所用的协议,如HTTP、HTTPS等
• 用户信息:登录信息包含用户名和密码,用于身份认证(明文传递不安全)
• 主机名:访问的资源所在的位置,可以是IP地址、域名(由DNS解析成IP地址)
• 端口号:表示连接到主机的端口号
• 路径:描述资源所在服务器的具体位置
• 查询字符串:传递给服务器的参数,以键值对形式传递
• 片段标识符:指定资源的某个片段,如文章的不同章节

在我们日常生活中所看的URL很简短并没有上述例子那么长,通常按需求可以省略由系统自动识别
协议(默认http://)、用户信息端口号(根据协议自动识别)、路径(默认/index.html)

2.请求头(Header)

请求头也就是我们常说的报头,客户端发起请求所要传递的参数,以键值对的形式传递常见有以下几种
在这里插入图片描述

• Host:服务器的主机的地址和端口号
• Accept:接受响应内容格式
•Accept-Charset:接收的字符集
•Accept-Encoding:接收的编码方式
•Connection:连接格式(是否支持长连接)
•Content-Type:请求body中数据格式
•Content-Length:请求body中数据长度
•User-Agent:浏览器和操作系统的属性
•Referer:当前页面由那个也页面跳转过来
•Cookie:HTTP响应通过Set-Cookie返回的字符串数据

3.请求正文(Body)

请求正文与请求头中Content-Type有很大的联系,构建POST请求所上传的内容如文字、图片、用户登录信息等,通过不同格式存储在body里面。
🌰:更新头像
在这里插入图片描述
在这里插入图片描述

HTTP响应

在这里插入图片描述

1.首行

HTTP响应由版本号、状码、状态码解释构成,同HTTP请求首行里的版本号对应的是一个概念:HTTP协议基本介绍

• 状态码及状态码解释

响应状态码表示的是访问一个页面的结果成功、失败、资源缺失等等…,在返回的响应中用不同的数字来解释该页面的状态,创建的有以下几种。

状态码状态码解释
200OK(请求成功)
301Moved Permanently(永久重定向)
302Moved Temporarily(临时重定向)
404Not Found(资源不存在,访问路径有误)
405Method Not Allowed(浏览器不支持该方法请求)
500Internal Server Error(服务器内部错误,无法访问)
504Gateway Time-out(服务器无法在规定时间返回响应)
505HTTP Version not supported(服务器不支持该版本HTTP请求)

重定向可以理解为地址的转移分为临时和永久,418并没有真实的用途是一个彩蛋却引起了一个有趣的故事,有兴趣朋友可以去搜索一下🔍

2.响应头(Header)

HTTP响应头包含的参数为返回客户端信息,同样以键值对的形式返回,大体内容与请求头相似
在这里插入图片描述

• Date:响应生成的日期和时间
• Expires:响应过期的日期和时间
•Server:服务器的名称和版本
•Content-Type:响应body中数据格式
•Content-Length:响应body中数据长度
•Set-Cookie:设置客户端的Cookie

3.响应正文(Body)

响应正文格式同样取决于响应头中Content-Type,例如html、css、json…
在这里插入图片描述
HTTP请求、响应在结构组成上如出一辙,正是因为这种结构保证HTTP协议之间能够正常通信,协议的意义也因此得到了实现。

  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值