Doing is better than saying 行胜于言。
一.HTTP协议
(全称是Hyper Text Transfer Protocol 超文本传输协议,它规范了数据是如何打包和传递的,目前使用的是1.1版本)
1.URL uniform resource locator 这个有很多的名字和俗称有什么统一资源定位符; 统一资源定位器; 全球资源定位器; 统一资源定位; 网址
一般的url格式是
协议+主机名称+目录结构+文件名称
比如 http://www.baidu.com
完整的结构是
<scheme>://<user>:<pwd>@<host><port>/<path>;<params>?<query>#<frag> 协议 用户名 密码 主机名 端口号 资源位置 参数 查询字符串 锚点
单看这个是有点懵逼哈,一步一步来,
scheme 方案,协议的意思,意思是那种方式来获取浏览器的资源 我们常见的协议有http,https,ftp,那么还有一些其他的协议,详见下表:
常见的协议/默认的端口号 | 作用 |
---|---|
ftp -----------------21 | 文件的上传下载 |
SSH---------------22 | 安全的远程登录 |
TELNet-----------23 | 远程登录 |
SMTP------------25 | 邮件传输协议 |
DNS-------------53 | 域名解析 |
HTTP-----------80 | 超文本传输 |
POP3---------110 | 邮件接收 |
HTTPS-------443 | 加密传输http |
2.浏览器请求服务器的简单过程:
我们在浏览器输入网址,比如www.baidu.com,并不是一下子就到了百度的服务器上,而是先到达DNS服务器,进行域名解析,然后DNS会把解析之后的结果反馈回来,当然这个过程客户一般看不到的,解析为61.135.169.125,然后通过这个来请求百度的服务器,然后百度服务器得到请求,进行处理,在其他服务器比如文件系统,数据库,其他服务器获取响应的数据,然后再次响应给浏览器。那么**浏览器如何请求服务器?服务器如何来响应服务器?**他们之间如何传输?请看下一内容
3.HTTP协议规定了客户端和服务器端传递的数据块message(消息/报文)。符合这个规定,浏览器和服务器才能正确运作。
主要分为两部分:A 浏览器请求(Request) B服务器响应(Response)
首先来看请求消息:A 请求消息Request
(你可以尝试着打开一个网页,比如百度,然后打开控制台(按下F12),选择network,刷新网页,见下图,我们首先学习请求消息,下图是直观的一个学习内容)
在Request Headers 里面是一些请求消息(下图用红线表示部分)
在请求消息中,有三部分组成,分别是请求起始行,请求头,请求主体。
-
请求起始行:
包括请求方法,请求url和协议版本
常见的请求方法是 get 和 post,当然还有其他请求方法:
请求方法 | 具体 |
---|---|
get | 客户端向服务器要数据的时候使用,地址栏查询字符串,无请求主体(Form Data) |
post | 客户端向服务器提交数据的时候使用,隐式发送,有请求主体(Form Data) |
delete | 客户端可以删除服务器的内容(一般禁用)** |
put | 客户端可以向服务器添加内容(一般禁用),比如我能不能在我的银行账户上添加几个0** |
connect | 测试连接 |
trace | 追踪请求路径 |
delete | 客户端可以删除服务器的内容(一般禁用)** |
option | 选项 |
head | 表示客户端只回去响应的消息头 |
请求url 就是访问的地址链接
协议版本 http/1.1 代表1.1版本
- 请求头:
名称 | 作用 |
---|---|
host | 告诉服务器,请求的是哪个主机 |
Connection:keep-alive | 告诉服务器进行持久连接 |
User-agent | 告诉服务器自己的(浏览器)类型 |
Accept-Encoding:gzip,deflate | 告诉服务器自己可以接受的压缩文件类型 |
Accept-Language | 告诉服务器自己能接收的自然语言类型 |
Refer引用/推荐人 | 告诉服务器请求来自于哪个网页 |
3.请求主体:Form Data
B 服务器响应(Response) 响应消息
同样的,响应消息也是分为三部分,分别是响应起始行,响应头,响应主体。
你会发现,请求消息是从浏览器到服务器思考的,然后响应消息是服务器向浏览器思考。
-
1.响应起始行
包括协议版本,响应状态码,原因短句(对状态码解释说明)直观看下图协议版本 1.1 ,不再赘述!
下面是响应的不同响应状态码
下面看一下不同的状态码:(告诉浏览器服务器的响应状态是什么)
取值 | 表示信息 |
---|---|
1XX 100-199 | 提示信息 |
2XX | 表示成功响应 |
3XX | 301 永久重定向 |
3XX | 302 临时重定向 |
3XX | 304请求未被修改,还是原来的请求,命中缓存 |
4XX | 客户端请求错误 |
404 NOT Found | 请求资源不存在 |
403 Forbidden | 权限不够 |
405 Method not Allowed | 请求方法不被允许 |
5XX | 服务器端运行错误 |
原因短句,就是对状态码的解释 比如 OK ,NO
- 2.响应头
名称 | 作用 |
---|---|
Date | 告诉浏览器服务器响应的时间 |
Connection:keep-alive | 告诉浏览器已经启动了持久的连接 |
Conten-type | 响应主体的类型(见下) |
– | text/html 响应回来的是html文本 |
– | text/plain 普通文本 |
– | text/css样式文件 |
– | application/javascript js 文件 |
– | image/png(jpeg,gif)图片类型 |
– | application/json 响应回来的是json格式的字符串 |
– | application/xml 响应回来的是xml格式的字符串 |
3.3响应主体 响应回来的数据
在network中,header 右边第二个
注:
以上是今日的HTTP协议相关的知识,全部个人原创,严禁任意的转载和包装转载,谢谢!
由于水平有限,要是有不周之处,还望海涵,感谢批评指正!
2019/04/24