1.了解HTTP
(1).什么是HTTP?
HTTP,HyperText Transfer Protocol,超文本传输协议。
作用:用于从Web服务器传输超文本到本地浏览器的传送协议。
解读这一句:方向是从服务器到浏览器,传送数据 ,协议
将HTTP拆分成三个部分:
- HyperText
- Transfer
- Protocal
HyperText
决定了传送的内容
和HTML中的HyperText是一致的,超文本
请问:什么是超文本?
所谓的超文本,就是指HTML文件、图片文件、音视频文件、动画文件、css文件夹、js文件等。
Transfer
传输的意思。
决定了HTTP的作用。
既然是传输,就一定涉及到双方:
- 传送方
- 接收方
实际上,传送方是服务器端,接收方是浏览器端。
Protocal
协议,就是规范。
决定了如何来传输内容。
只要涉及到双方,肯定有一个规范。
既然是从服务端向浏览器端传输超文本,应该怎么传送,相应的就有一些规范。
(2).HTTP的构成?
HTTP是有两个部分构成的:
- HTTP请求
- HTTP响应
实际上,HTTP本质上是指超文本如何从服务端传输到浏览器端的。
但是,这个传输它不是主动完成的,而是被动完成,用户在浏览器中输入了url,或者点击某个超链接,才会开始传输内容。
换言之,HTTP是一个请求/响应模型。
在HTTP中,一定是先有请求,然后才有响应。
针对请求,称之为request,有三个部分构成: - 请求行
- 请求头请
- 求正文
针对响应,称之为response,也有三个部分构成: - 状态行
- 响应头
- 响应正文
(3).网络查看工具–network
网络查看工具是任何一个web开发人员必须要掌握的一个工具。
基本上,所有的浏览器都有network面板。
Chrome浏览器
针对http请求,可以分为不同的类型,如下:
Firefox浏览器
(4).http请求
http请求有如下三个部分构成的:
- 请求行
- 请求头
- 请问正文
在http中,http请求分为如下两种: - get请求
- post请求
get请求
直接使用url来访问页面,都属于get请求。典型形式有:
- 在地址栏中中输入url
- 点击页面中的超链接
- 通过js跳转
平常,浏览网站和页面的时候,都是属于get请求
使用一个本地的静态页面,来说明,访问如下:
点击每一个请求,就可以查看其详细信息。
firefox如下:
注意:chrome浏览器比较特殊,访问任何一个页面,都会自动去请求一个favicon.ico的文件。
在chrome浏览器下,点击每一个请求,对应的有如下几个选项:
重点要分析Headers
Get请求,请求正文为空。
请求行中,一般包括如下:
- 请求的路径,比如/
- 请求的方式,如get或post
- 协议的版本,如HTTP/1.1
请求正文,针对get请求,永远为空。
post请求
使用form来提交数据的,通常是post请求。
平常在登录账号的时候,都是post请求。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200815171150204.png#pic_center) 针对get和post请求,区别就在于请求正文,get请求正文是空的,post请求正文是有内容的,是以键值对的方式来提交的。 ## http响应 -- response 响应就不分get和post,两种都一样。 响应也是由三个部分构成的: - 响应行/状态行 - 响应头 - 响应正文 ### 响应行/状态行 有如下几个信息: - 协议版本号,通常就是HTTP/1.1 - 响应的状态码 - 响应的状态描述,和状态码一一对应响应头
告诉浏览器一些信息,比如你应该使用何种编码来解析返回的内容
响应正文
返回给用户的内容,用户可以看到的内容。
三个部分,其中响应正文是给用户看的,会呈现在浏览中,而其余两个是给浏览器的,不会呈现在浏览器中的。
使用chrome查看:
其中,200就是状态码,ok是状态描述。
常见的状态有:
200,ok,表示一切正常
302,founded,重定向
304,not modified,使用缓存
403,forbidden,没有权限
404,not found,找不到
500,服务器内部错误
(6).进一步来理解HTTP?
请问:在访问网站的时候,用户在浏览器端看到的内容从而何来?
内容,都是从服务器端传输过来的。
涉及到,从服务端传输到本地浏览器端,为了确保能够传输,所以需要遵循一定的规范,这个规范就是HTTP。
浏览网站/页面的本质,就是发起一个HTTP请求,服务端接收到请求,进行处理,返回一个HTTP响应。响应的结果通常就是超文本。浏览器接收到这些超文本,然后将其保存到浏览器开辟的内存中,然后解析并显示。
请问:针对百度首页,只是访问了一个url,https://www.baidu.com/,但是却有若干请求,如下,这是为何?
我们在访问网站/页面的时候,第一次一定是请求HTML页面,说白了就是html文件。服务端会返回一个html的内容
然后,浏览器会解析这个响应的内容,在解析标签的过程中,会遇到一些比较特殊的标签:
这些img、link、script标签,它们非常特殊,它的内容不是文本,而是一个文件。这些文件是一个url,说明,此时需要发起一个新的http请求,将这个文件下载回来。
在http中,任何一个文件都是一次全新的请求,如图: