HTTP协议详解

一、什么是HTTP协议

  HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。

二、什么是无状态协议?怎么解决?

1、Cookie简介

  无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息。也就是说,当客户端一次HTTP请求完成以后,客户端再发送一次HTTP请求,HTTP并不知道当前客户端是一个”老用户“

  可以使用Cookie来解决无状态的问题,Cookie就相当于一个通行证,第一次访问的时候给客户端发送一个Cookie,当客户端再次来的时候,拿着Cookie(通行证),那么服务器就知道这个是”老用户“。
在这里插入图片描述
  Cookie是一种(key,value)形式的字符串,服务器需要记录这个客户端请求的状态,因此在响应头中包一个Set-Cookie字段。再次请求时,将会在请求头中包含服务器响应的Cookie信息

// 首次请求
GET / HTTP/1.0
HOST: itbilu.com

// 服务器响应请求
HTTP/1.0 200 OK
Set-Cookie: UserID=itbilu; Max-Age=3600; Version=1
Content-type: text/html

// 再次请求
GET / HTTP/1.0
HOST: itbilu.com
Cookie: UserID=itbilu

2、Cookie和Session的区别

  Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了

  如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了

三、常用的HTTP方法有哪些?

  • GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器。

  • POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。

  • HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效

  • PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。

  • DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。

  • OPTIONS:查询相应URI支持的HTTP方法。

四、GET方法与POST方法的区别

  从使用的角度看,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息

  • GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?。而POST把提交的数据则放置在是HTTP包的包体中。

  • POST的安全性要比GET的安全性高,通过GET提交数据,用户名和密码将明文出现在URL上

  • GET请求标准上是幂等的(在某个时间范围内多次运算所得的结果和一次运算所得的结果是一样的:abs(a)=abs(abs(a)));POST请求标准上不是幂等的

五、HTTP请求报文与响应报文格式

在这里插入图片描述

  • 请求行:包含请求方法、URI、HTTP版本信息;
  • 请求头;
  • 空行(通知服务器以下不再有请求头);
  • 请求体。
    在这里插入图片描述
  • 响应行:协议版本、响应码、响应信息;
  • 响应头;
  • 空行(通知服务器以下不再有响应头);
  • 响应体。

六、常见的HTTP响应状态码

  • 200:请求被正常处理;

  • 301:永久性重定向(该状态码表示请求的资源已被分配了新的 URI, 以后应使用资源现在所指的 URI,资源是被永久移动的);

  • 302:临时重定向(该状态码表示请求的资源已被分配了新的 URI, 希望用户(本次) 能使用新的 URI 访问。302状态码表示资源不是被永久移动的,只是暂时性质的);

  • 403:请求的对应资源禁止被访问;

  • 404:服务器无法找到对应资源;

  • 500:服务器内部错误。

七、HTTP的缺点与HTTPS

  • 通信使用明文不加密,内容可能被窃听

  • 不验证通信方身份,可能遭到伪装

  • 无法验证报文完整性,可能被篡改

  HTTPS就是HTTP加上加密处理(一般是SSL安全通信线路)+认证+完整性保护。

八、HTTP优化

  • TCP复用:TCP连接复用是将多个客户端的HTTP请求复用到一个服务器端TCP连接上,而HTTP复用则是一个客户端的多个HTTP请求通过一个TCP连接进行处理。

  • TCP缓冲:通过采用TCP缓冲技术,可以提高服务器端响应时间和处理效率,减少由于通信链路问题给服务器造成的连接负担。

  • 内容缓存:将经常用到的内容进行缓存起来,那么客户端就可以直接在内存中获取相应的数据了。

九、HTTP1.0, HTTP1.1和 HTTP2.0的区别

  • HTTP1.0默认短连接,支持文本,可以长连接,但是需要设置header connection:keep_Alive。

  • HTTP1.1默认长连接,支持文本

  • HTTP2.0支持二进制传输数据,实现了多路复用,支持服务“主动”给客户端缓存发送数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值