HTTP学习总结整理

一、了解HTTP

1.1HTTP原理

当我们在网页上输入一个网址(URL)时,Web页面当然不能凭空显示出来。根据Web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源等信息,从而显示Web页面。
Web使用一种名为HTTP的协议作为规范,完成从客户端到服务端等一系列运作流程。而协议是指规则的约定。可以说,Web是建立在HTTP(超文本传输协议)协议上通信的。

1.2客户端与服务器端

类似通过发送请求服务器资源的Web浏览器或者其他应用程序等,都可以称作客户端;而接受到客户端请求后,响应客户端,返回给哭护短响应资源等称作服务器端

1.3为何要有应用层?

通过学习完TCP/IP,我们知道数据能从客户端进程经过选择跨网络传送到服务器端进程,可是仅仅把数据从A端发到B端就完了吗?就像我们在淘宝上卖完东西后,用完还要给卖家评论打分。我们把数据从A端B端只是完成了快递的功能,而两端还要对数据进行加工处理或者使用,所以我们还需要一层协议,这层协议只关心应用细节,不关心通信细节。这就是我们的HTTP协议解决的事情。
在这里插入图片描述

1.4认识URL

在这里插入图片描述
使用http:或https:等协议方案名获取访问资源时要指定协议类型。不区分字母大小写,最后附一个冒号(😃

登陆信息(认证)

指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份认证)。此项是可选项。

服务器地址

使用绝对URI必须指定待访问的服务器地址。地址可以是类似hackr.jp这种DNS可解析的名称,或是192.168.1.1这类的IPv4地址名,还可以是[0:0:0:0:0:0:1]这样用方括号括起来的IPv6地址名。

服务器端口号

指定服务器连接的网络端口号。此项也是可选项,若用户省略则自动使用默认端口号。

带层次的文件路径

指定服务器上的文件路径来定位特指的资源。

查询字符串

针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数。此项可选。

片段标识符

使用片段标识符通常可标记出已获取资源中的子资源。但在RFC中并没有明确规定其使用方法。该项也为可选项。

二、深入学习HTTP

1.HTTP协议格式

在这里插入图片描述

1.1HTTP请求

在这里插入图片描述

  • 首行:[方法] + [URL] + [版本]
  • Header:请求的 属性,冒号分割的键值对,每组属性之间使用\n分隔,遇到空行表示Header部分结束
  • Body:空行后面的内容都是Body,Body允许为空字符串,如果Body存在,则在Header中会有一个Content-Length属性来表示Body的长度

1.2HTTP响应

在这里插入图片描述

  • 首行:[版本号] + [状态码] + [状态码解释]
  • Header: 请求的属性,冒号分割的键值对;每组属性之间是用\n来分隔,遇到空行这表示Header部分结束
  • Body:空行后面的内容都是Body。Body允许为空字符串。如果Body存在,则在Header中会有一个Content-Length属性来表示Body的长度;如果服务器返回一个了html页面,那么html页面内容就是在body中。

2.HTTP常见的方法

方法 说明 支持的HTTP协议版本
GET 获取资源 1.0、1.1
POST 传输实体主体 1.0、1.1
PUT 传输文件 1.0、1.1
HEAD 获得报文首部 1.0、1.1
DELETE 删除文件 1.0、1.1
OPTIONS 询问支持的方法 1.1
TRACE 追踪路径 1.1
CONNECT 要求用隧道协议连接代理 1.1
LINK 建立和资源相关的联系 1.0
UNLINE 断开连接关系 1.0

其中最常用的就是GET和POST方法。

3.HTTP的状态码

状态码 类别 原因短语
1XX 信息状态码 接受的请求正在处理
2XX 成功状态码 请求正常处理完毕
3XX 重定向状态码 需要进行附加操作以完成请求
4XX 客户端服务错误状态码 服务器无法处理请求
5XX 服务器错误状态码 服务器处理请求出错

例如:
200:服务器正确处理完请求,并返回响应
301/302/307:重定向,服务端响应3XX重定向状态码,location包头,之后浏览器会自行跳转到location的网址。
400:客户端错误
404:找不到资源
405:不支持的客户端请求方法
500:服务器错误
502:网关错误

4.HTTP常见的Header

  • Content-Type: 数据类型(text/html等)
  • Content-Length: Body的长度
  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
  • User-Agent: 声明用户的操作系统和浏览器版本信息; referer: 当前页面是从哪个页面跳转过来的;
  • location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;

5.Cookie和Session

5.1Cookie

我们在访问有的网上资源的时候往往需要经过认证的账户才能访问,而且要一直保持在线状态,所以,cookie是一种在浏览器端解决的方案,将登陆认证之后的用户信息保存在本地浏览器中,后面每次发起http请求,都会自动携带该信息,就能达到认证用户,报纸用户在线的作用。
在这里插入图片描述

5.2 Session

将用户敏感信息放到本地浏览器中,能解决一定的问题,但是又引进了新的安全问题,一旦cookie丢失,用户信息泄露,很容易造成跨站攻击,所以有了另一种解决方法,将用户敏感信息保存至服务器,而服务器本身采用md5算法或者相关算法生成唯一值(session id),将该值保存在客户端浏览器,随后,客户端的后续请求,浏览器都会自动携带该id,进而再在服务器端认证,进而达到状态保持的效果。
在这里插入图片描述

5.3 Cookie和Session的区别

  • Cookie以文本文件格式存储在浏览器中,而session存储在服务端
  • 因为每次发起Http请求,都要携带有效Cookie信息,所以Cookie一般都有大小限制,以防止增加网络压力,一 般不超过4k
  • 可以轻松访问cookie值但是我们无法轻松访问会话值,因此session方案更安全

6 HTTP和HTTPS的区别

  • https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章