博客> HTTP 请求 详解
HTTP 请求 详解
2019-08-19 15:40 评论:0 阅读:508 lvhahaha
HTTP get post

HTTP 是什么、请求方法的种类、如何利用 Cookie 来解决无状态这个缺陷、以及 HTTP 有什么缺点,最后引出 HTTPS 是什么。

HTTP 超文本传输协议,位于应用层

OSI 参考模型将复杂的计算机网络体系结构分了 7 层; TCP/IP 协议族则将网络体系分了 4 层,具体如下图:

 屏幕快照 2018-11-26 下午7.33.38.png

 屏幕快照 2018-11-26 下午7.34.14.png  屏幕快照 2018-11-26 下午7.41.42.png

这里我们主要了解两点:

1.将复杂的网路体系分层,可以更加简单的实现每层的协议,也便于以后对各层协议的扩展和优化。

2.HTTP 属于应用层,是一种基于请求和响应、且无状态的一种协议。

HTTP 是不保存状态的协议

HTTP 为了快速的处理大量事务,确保协议的可伸缩性,所以设计的很简单;HTTP 是一种不保存状态,即无状态协议。简单来说,HTTP 对于请求和响应都不会做持久化处理。

但是无状态这个特性会导致业务逻辑的尴尬(例如需要登录权限),为了实现保持状态的功能,引入了 Cookie 技术;通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。

HTTP 支持的方法种类

HTTP 请求方法有:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。最常用的就是 GET 方法 和 POST 方法;

对于方法种类和介绍如下图:

 屏幕快照 2018-11-26 下午8.09.39.png

HTTP 有请求报文和响应报文

HTTP 通信的基本单位是报文,HTTP 是一种基于请求和响应的协议,所以有请求报文和响应报文。HTTP 报文由报文首部和报文实体组成:报文首部主要是配置信息,然后报文实体是传输的数据。

对于报文首付中的字段解释以及 HTTP 状态码等,可以参阅下 https://book.douban.com/subject/25863515/ 或者文末的参考链接。这里就不过多描述了(因为实在是太多了 - -/...)。

GET 方法和 POST 方法的区别

从语义角度来说,GET 是从指定的资源请求数据,POST 是向指定的资源提交要被处理的数据。正规详细的解释在这里: http://www.w3school.com.cn/tags/html_ref_httpmethods.asp

HTTP 方法:GET 对比 POST。摘抄区别如下:

 屏幕快照 2018-11-26 下午8.10.28.png

GET 方法和 POST 方法安全性比较

对于安全性,只能说 POST 比 GET 相对安全一丢丢:

1.GET 方法参数直接拼接在 URL 后面,可以在浏览器直接看到。

2.GET 方法参数会被缓存。

3.POST 方法参数放到 HTTP 消息主体,但是通过网络抓包一样是可以获取到参数的。

在这里不能讨论安全性的问题,POST 跟 GET 只是 HTTP 两种方法而已,对于传输层来说都是明文的,都是不安全的,对于网络请求安全问题应该要借助其它技术来实现,例如利用 HTTPS 来保证安全性。

HTTP 的缺点

为了让 HTTP 更加快速的处理大量事务,确保协议的可伸缩性,所以把 HTTP 设计的很简单。因此也会出现以下问题:

1.由于通信是使用明文的,所以内容很容易被窃听。

2.由于不会验证对方身份,这里很容易遭遇伪装,伪装服务器或者伪装客户端等,容易遭受 Dos 攻击。

3.不校验报文的完整性,会出现中间人攻击,篡改报文信息的情况。

对于这些缺点,我们可以通过将报文加密、认证通信双方、校验报文的完整性来解决。HTTP + 加密 + 认证 + 完整性保护 = HTTPS。这里就是为什么推行 HTTPS 的原因,因为 HTTPS 可以有效的解决上述 HTTP 的缺点。

收藏
1
sina weixin mail 回到顶部