一、HTTP
http,全称HyperText Transfer
Protocol,超文本传输协议(协议,定义了一种规则)
是一个应用层的协议
用于分发协作
是万维网的数据交流的基础
二、URL/URI
1、定义
- URI:Uniform Resource Identifier 统一资源标识符
- URL:Uniform Resource Location 统一资源定位符
URL是使用浏览器等访问web页面的时候需要输入的网页地址
http://www.baidu.com
URI是更通用的资源标识符,URL是它的一个子集。URI由两个主要的子集构成
- URL:通过描述资源的位置来描述资源
- URN:通过名字来识别资源,和位置无关
2、我们常见的URL主要由三部分组成
- 方案,也就是我们常说的协议
- 服务器位置
- 资源路径
看个例子
http://samaritan89.github.io/f2e/js/ajax.html
通用的URL由9部分组成
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash>
9部分具体解释:
- <scheme>:对于web页面来说最常用的协议就是http和https
- <user>:<password>:user和password现在不常见了,不会在URL明文书写用户名和密码了,都是通过登录的方式
- <host>:主机可以是IPO地址过着域名
- <port>:端口号用来区分主机上的进程,方便找到web服务器,http默认是80
- <path>:path是资源的路径,也就是存放位置,不一定和物理路径完全对应,符合web服务器路由约定即可
- <params>:params,在一些协议中需要参数来访问资源,例如ftp是二进制还是文本传输,参数是名值对,用;隔开
- <query>:query:这个是get请求最常用的传递参数方式了 ?a=1&b=2&=3
- <hash>:hash也成为片段,设计为标识文档的一部分,很多MVVM框架用作了路由功能
三、HTTP报文
1、定义
规定浏览器和服务器之间传输的数据有固定的格式,即报文
英文资料参考:
2、报文的组成
HTTP报文是简单的格式化数据块,每个报文都包含一条来自客户端的请求或者一条来自服务器的响应,由3个部分组成
- 对报文进行描述的起始行 —— start line
- 包含属性的首部块 —— header
- 可选的包含数据的主体部分 —— body
HTTP/1.0 200 OK
content-type: text/plain
content-length: 19
Hi, I'm a message
3、报文类型
- 请求报文
- 响应报文
(1)请求报文:
在浏览器上输入url,浏览器将发送一条请求,之后做dns的查询,找到对应服务器。那么,请求在网络传输中是一种什么样的格式?即为请求报文
//向web服务器请求一个动作
<method><request-URL><version> /* 包含http版本号和请求的url,以及对应的状态码 */
<headers>
<entity-body>
(2)响应报文
把请求结果返回给客户端
<version><status><reason-phrase>
<headers>
<entity-body>
首部和方法配合,共同决定了服务器和客户端能做什么
4、报文首部速记
通用首部
请求首部
响应首部
四、状态码
戳文状态码了解一下:
- 301,客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。配置server时,在配置文件中添加301和url。用户访问这个url时,看到301这个重定向,请求到达服务器,服务器将301状态码写入,浏览器收到该响应,写入记忆内部,下次访问的时候,浏览器看到301这个状态码时,就会进行url的重定向。
- 304,关于缓存机制。
- 400,请求有问题。
- 403,访问有权限。