目录
1.下述HTTP响应报文中传输的数据是多少字节?HTTP/1.1 200 OK
一、学习目标
理解并掌握HTTP协议的概念和运行机制
理解HTTP请求头和响应头的格式和作用
熟练掌握各种常用的HTTP请求方法和响应状态码的意义
理解Cookie和Session的作用和区别
二、学习背景
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可以给服务器发送什么样的消息以及能够得到什么样的响应。这个简单的模型是早期Web应用得以普及的重要保障,可以说没有HTTP协议,就没有今天丰富多彩、繁荣兴旺的互联网。
三、学习内容
1.什么是http协议
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
通俗的讲:http协议是实现我们和网站服务器交互行为的一种格式.
交互:即"请求"&"响应" .例如有a和b两个人,
a对b提问"两岸猿声啼不住的下一句是什么?",这就是"请求".
b对a回答到"一枝红杏出墙来!" 这就是"响应". ( 当然回答内容肯定是错的.QAQ. )
这整个过程就是交互. 而http协议,就是我们在交互过程的一种双方约定俗成的格式.就像日常生活种写信要写上开头/正文/结尾致敬 三部分内容一样.
2.http的特点
1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
3、连接方式:
HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。(每次请求需要重新连接)
HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象,采用这种方式可以节省传输时间。
4、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
5、支持B/S及C/S模式。(B/S及C/S为一种系统架构,作了解.)
3.http工作流程
HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程: [7]
(1)客户与服务器建立连接;
(2)客户向服务器提出请求;
(3)服务器接受请求,并根据请求返回相应的文件作为应答;(响应)
(4)客户与服务器关闭连接。
4.报文格式
HTTP报文分为请求报文和响应报文(在各自对应的过程种产生):
请求报文格式如下:
请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
请求行以方法字段开始,后面分别是URL字段和HTTP协议版本字段,并以CRLF结尾。SP是分隔符。除了在最后的CRLF序列中CF和LF是必需的之外,其他都可以不要。有关通用信息头,请求头和实体头方面的具体内容可以参照相关文件。
应答报文格式如下:
状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体
状态码元由3位数字组成,表示请求是否被理解或被满足。原因分析是对原文的状态码作简短的描述,状态码用来支持自动操作,而原因分析用来供用户使用。客户机无需用来检查或显示语法。有关通用信息头,响应头和实体头方面的具体内容可以参照相关文件。
总结:
请求报文
- 第一部分:请求行,第一行写明了例如是http1.1版本,以及请求方式(get/post)。
- 第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息第二行至第六行。
- 第三部分:空行,请求头部后面的空行是必须的,第七行的空行。
- 第四部分:请求数据也叫主体,可以添加任意的其他数据。,第八行
响应报文
- 第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。例如(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
- 第二部分:消息报头,用来说明客户端要使用的一些附加信息.例如,Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是ISO-8859-1
- 第三部分:空行,请求头部后面的空行是必须的,第七行的空行。
- 第四部分:响应正文,服务器返回给客户端的文本信息。第八行,空行后面的html部分为响应正文。
5.请求方法
根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
get /post区别
GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. | POST方法是把提交的数据放在HTTP包的Body中. |
GET提交的数据大小有限制(因为浏览器对URL的长度有限制) | 而POST方法提交的数据没有限制. |
GET方式需要使用Request.QueryString来取得变量的值 | POST方式通过Request.Form来获取变量的值。 |
GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上.(网址栏)页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码. | 安全 |
url是什么?
图中的红色框内的数据即我填写网页数据时提交的数据,可以很明显的看到.
6.状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
1:指示信息--表示请求已接收并将处理
2:成功--表示请求已成功接收并处理完毕
3:重定向--要完成请求必须进行更进一步的操作
4:客户端错误--请求有语法错误或请求无法实现
5:服务器端错误--服务器未能实现合法的请求
常见的状态码:
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
7.探究cookie和Session
使用Chrome浏览器打开任意一个网站,例如百度(https://www.baidu.com),然后在页面上点击鼠标右键,在弹出的菜单上选择「检查」选项。
在出现的开发者选项界面中,选择「Network」选项。
重新刷新页面,点击「Name」列表中的任意一个请求地址,就可以看到HTTP协议在请求/响应过程中涉及到的数据内容和格式。
关注HTTP请求头和响应头(Request Headers和Response Headers)中的内容以及其中的作用。写出Cookie和Session的区别(有多少就写多少):
| |||||||||||||||||
ps: 用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。 总结:重要信息多存放session ,其他信息存放于cookie |
四、习题及其求解过程
1.下述HTTP响应报文中传输的数据是多少字节?HTTP/1.1 200 OK
Date: Mon, 27 June 2021 15:29:31 GMT
Server: Apache
Last-Modified: Wed, 22 June 2021 19:15:56 GMT
Accept-Ranges: bytes
Content-Length: 188
Vary: Accept-Encoding
Content-Type: text/plain
解: 188字节.
Content-Length: 188
多为了解,正确理解其中含义,在需要时会查找即可.网上有详细的的对每一行的代表内容的解释.深入了解可自行查看相关资料.