2.HTTP简介

5/15/2023 html

# HTTP简述(出自MDN)

超文本传输协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的。 HTTP遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。 HTTP是无状态协议,意味着服务器不会在两个请求之间保留任何数据(状态)。虽然通常基于TCP / IP层,但可以在任何可靠的传输层上使用。

# HTTPS

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单来说就是是HTTP的安全版本,即在HTTP下加入SSL层,HTTPS的安全基石是SSL,因此加密的详细内容就需要SSL。 它现在已经被广泛应用,比如GitHub,支付宝,掘金等。

# 为什么需要NTTPS

HTTP的几个缺点:

  • 传输的时候使用明文,这显然会被不法者截取干一些见不得人的勾当。
  • 没有认证机制,这样我们就可以伪造一些HTTP访问,这显然会造成一些困扰。比如Jmeter就是典型的例子,伪造一大堆的HTTP URL然后压力测试,这也就是DOS攻击的一种。
  • 无法验证报文的完整性,比如一个HTTP的报文已经被不法者截取并且篡改,而服务器端却无法验证。

# HTTP与HTTPS的区别

  • HTTP是明文传输,HTTPS通过SSL\TLS进行了加密
  • HTTP的端口号是80,HTTPS是443
  • HTTPS需要到CA申请证书,一般免费证书很少,需要交费
  • HTTP的连接很简单,是无状态的。而HTTPS协议是SSL+HTTP;协议构建的可以进行加密传输、身份认证的网络协议,比HTTP协议安全

# HTTPS的缺陷

  • 通信的速度变慢,由于需要加密,一个握手就多了好几个往返;
  • 对用户的机器负载的增加

# HTTPS握手过程

  1. 客户端使用http的url访问web服务器,要求与服务器建立ssl连接
  2. web服务器收到客户端请求后,会将网站的证书(包含公钥)传送一份给客户端
  3. 客户端收到网站证书后会检查证书的颁发机构以及过期时间,如果没有问题就随机产生一个秘钥
  4. 客户端利用公钥将会话秘钥加密,并传送给服务器,服务端利用自己的私钥解密出会话秘钥
  5. 之后服务器与客户端使用秘钥加密传输

# HTTP协议

  1. 最初是浏览器与服务器之间的通讯协议,GET用于读取资源,POST用于提交表单
  2. 后来被扩充到接口格式的定义,GET和POST作为接口的请求方式

HTTP协议并没有限制GET请求上限(只是GET请求约定俗成把参数放在url的query中,url的长度有限)

  1. 浏览器限制:IE2048个字符,Chrome 2M,不同浏览器有不同的限制
  2. 服务端限制:有不同程度的限制,目的是解决性能损耗的问题

为什么做这样的限制呢? 是因为服务端解析一个字符串时,需要分配内存,而url必须作为一个整体去看待,没有办法分块处理。于是,必须预先分配一块足够大的内存来存储url,如果url太长或者并发量高的话,就很容易挤爆服务器的内存。为了解决这个问题,所以各端对url的长度做了不同程度的限制。这也就是GET请求有上限的原因

POST并没有比GET更安全

  1. 都是明文,只是一个参数存query,一个参数存body而已
  2. GET/POST只是请求方式,谈不上安全
  3. 真正的安全,只有双端加密,网络节点只能截取包,不能截取内容。如:https

RESTFul-API
表示性状态转义接口(即:API设计规范)

  1. 将一切数据试做资源
  2. 利用HTTP请求方式,描述对资源的操作(增、上、改、查)
  3. 通过HTTP相应状态码,描述对资源的操作结果(如:200/5xx)

Method规范:用于描述操作(动词)

  1. GET用于读取资源
  2. POST用于创建资源
  3. PUT用于更新资源(客户端提供更新后的完整资源)
  4. Patch用于局部更新(客户端提供资源局部变量)
  5. DELETE用于删除资源
最近更新时间: 5/21/2023, 2:47:45 PM
강남역 4번 출구
Plastic / Fallin` Dild