1.GET 和 POST 的区别,你知道哪些?
- 数据操作类型:GET是获取数据,POST是修改数据
- 数据传输方式:GET 方法传输的数据是明文的,GET把请求的数据放在url上, 以?分割URL和传输数据,参数之间以&相连,所以GET不太安全。而POST把数据放在HTTP的包体内(request body 相对安全)。GET比POST不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。而 POST 方法可以通过 SSL/TLS 加密传输数据,保证传输的安全性。
//GET把请求的数据放在url上的示例:在bilibili搜bilibili
https://search.bilibili.com/all?keyword=bilibili&from_source=webtop_search&spm_id_from=333.1007&search_source=5
- 请求数据长度:GET提交的数据最大是2k( 限制实际上取决于浏览器), post理论上没有限制。
- GET产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据); POST产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
- GET请求会被浏览器主动缓存,而POST不会,除非手动设置。
- 数据传输格式:GET 方法只能传输 ASCII 码字符,而 POST 方法可以传输二进制数据。
- 本质区别:GET是幂等的,而POST不是幂等的。
这里的幂等性:幂等性是指一次和多次请求某一个资源应该具有同样的副作用。简单来说意味着对同一URL的多个请求应该返回同样的结果。
正因为它们有这样的区别,所以不应该且不能用get请求做数据的增删改这些有副作用的操作。因为get请求是幂等的,在网络不好的隧道中会尝试重试。如果用get请求增数据,会有重复操作的风险,而这种重复操作可能会导致副作用(浏览器和操作系统并不知道你会用get请求去做增操作)。
记忆:获u2两缓
2.Cookies Session Token区别是什么?
- Cookies是存储在用户浏览器中的小型文本文件,用于跟踪用户在网站上的活动。Cookies通常包含一个标识符和一些附加信息,例如用户偏好设置或购物车内容。Web应用程序使用Cookies来保持用户状态,例如在用户进行登录认证后保持用户的登录状态。Cookies是无状态的,也就是说,它们本身不存储任何有关用户的信息,但可以用于识别用户。
- Session是一种服务器端的机制,用于在Web应用程序中存储和管理用户状态。Web应用程序在服务器端为每个用户创建一个唯一的Session ID,该ID用于在服务器端跟踪用户的会话信息。Session ID通常存储在Cookies中,但也可以存储在URL参数中。Web应用程序使用Session来管理用户状态,例如在用户进行登录认证后存储用户的登录信息,或在用户在网站上进行购物时存储购物车内容。
- Token是一种加密字符串,用于验证用户的身份和授权用户对Web应用程序的访问。Web应用程序在用户进行登录认证后,生成一个Token并将其存储在客户端的Cookies或本地存储中。之后,当用户进行后续的请求时,Web应用程序使用Token来验证用户的身份和授权用户对资源的访问。
总的来说,Cookies和Session都是用于管理用户状态的机制,而Token则是用于验证用户身份和授权访问的机制。Cookies是存储在客户端的文本文件,Session是存储在服务器端的会话信息,而Token是加密字符串。