http请求的基础知识

一、什么是http协议?

http协议(Hyper Text Transfer Protocol,超文本传输协议),客户端和服务器进行数据交互的协议。

http协议的特点:

(1)支持客户端/服务端(C/S)模式

(2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 

(3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
(4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 

(5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

二、什么是http请求?

http请求是从客户端向服务端发送请求数据。

一次完整的http请求的步骤

(1)输入url

根据域名/IP找到对应的服务器

(2)建立TCP连接(TCP三次握手)

HTTP协议是基于TCP/IP协议来进行通信的。在HTTP进行工作前,客户机需要与服务器建立连接,而连接是需要通过TCP协议进行传输的,TCP协议与IP协议共同构建了了internet。HTTP协议是比TCP协议更高一层的应用层协议,按照规定,只有低层协议建立后,才能建立更高层协议的连接。因此,在HTTP请求前,首先要建立TCP连接。

(3)客户端向服务器发送请求

TCP连接建立后,客户端向服务端发送请求,包括请求行、请求头、请求体

请求行:①请求方法:GET、POST、PUT、DELETE等;②请求url;③HTTP协议以及版本

请求头:HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,例如:Cookie、UA、Accept-Language等

请求体:POST请求时传递的信息;GET请求没有请求体

(4)服务器接收请求,进行相应处理

(5)处理完成后,做出响应,向客户端发送数据

响应的信息主要包括:响应码、响应头、响应体

响应码:又称状态码,一般响应码由3位数字组成

1XX:指示信息—服务器已经接收请求,继续处理

2XX:成功—请求已经被接收成功

3XX:重定向—完成请求需要更进一步的操作

4XX:客户端错误—请求有语法错误或请求无法实现

5XX:服务器错误—服务器在处理请求的过程中发生了错误

常见的状态码以及出现的原因:

200:客户端请求成功

302:临时重定向

401:请求未经过授权

403:服务器接收到请求,但是拒绝执行

404:请求的资源不存在(通常是请求的url错误)

500:服务器内部错误

502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应

503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

响应头:响应报文头,例如cache、cookie等信息

响应体:服务器返回给客户端的数据

三、cookie、session和token

因为http请求是无状态的,服务器无法从网络连接上识别访问者的身份,为了解决这个问题,就有了cookie

cookie:客户端请求服务器,如果服务器需要记录该用户的状态,就向客户端发送一个cookie,客户端会把这个cookie保存下来,当下次访问服务器时,把请求的网址连同cookie信息,一起发送给服务器,服务器根据接收到的cookie来辨别用户信息。cookie存放在客户端中

session:session是另一种存放会话的机制,主要存放在服务端。当客户端访问浏览器的时候,服务器把客户端信息以某种形式存放在服务器中,这就是session;当程序需要为某个客户端的请求创建session时,先检查客户端的请求中有没有sessionId(用户首次登录服务器创建,并返回给客户端的信息),如果有sessionId,服务器就根据sessionId把这个用户的相关session信息检索出来并使用;如果请求不包含sessionId,则根据session为该用户新创建一个sessionId。session信息譬如:用户账户余额、购物车等信息

token:token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库(个人理解,主要是避免不合法)

使用token进行身份验证的流程:

①客户端使用用户名跟密码请求登录

②服务端收到请求,去验证用户名与密码

③验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端

④客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者数据库里

⑤客户端每次向服务端请求资源的时候需要带着服务端签发的 Token

⑥服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

 

 

参考文章:https://www.cnblogs.com/jiu0821/p/5641600.html;

https://blog.csdn.net/tobetheender/article/details/52485948;

https://www.jianshu.com/p/fb9eb7b6fec6

转载于:https://www.cnblogs.com/arong-xt/p/11177696.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTTP(HyperText Transfer Protocol)是一种用于在网络中传输超文本的协议。它是客户端和服务器之间进行通信的规则集。下面是一些HTTP协议的基础知识: 1. HTTP通信是无状态的:HTTP协议本身不保留任何关于先前请求或响应的信息。每个HTTP请求都是独立的,服务器不会记住之前的请求。 2. 请求方法:HTTP定义了不同的请求方法,常用的有GET、POST、PUT、DELETE等。GET用于获取资源,POST用于提交数据,PUT用于更新资源,DELETE用于删除资源。 3. URL:统一资源定位符(URL)是用于标识和定位资源的地址。它由协议类型(如http://)、主机名、可选的端口号、路径和查询参数组成。 4. 请求头:HTTP请求包含一些元数据,称为请求头。请求头包含了一些关于请求的附加信息,如User-Agent、Accept-Language等。 5. 响应状态码:HTTP响应包含一个状态码,用于表示请求的处理结果。常见的状态码包括200(成功)、404(未找到)和500(服务器内部错误)等。 6. 响应头:HTTP响应也包含一些元数据,称为响应头。响应头包含了一些关于响应的附加信息,如Content-Type、Content-Length等。 7. 实体:HTTP请求和响应中的有效载荷称为实体。通常,在请求中,实体是要发送给服务器的数据;在响应中,实体是服务器返回的数据。 这些是HTTP协议的一些基础知识,希望对你有帮助!如有更多问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值