关于http,cookie、session
首先是常见状态码 https://www.runoob.com/http/http-status-codes.html
GET 和 POST 的区别
- Restful语义上一个是获取, 一个是创建。
- GET是幂等的, POST是非幂等的。
- GET请求参数放到url(明文)里,有长度限制; POST放在请求体里面,更安全(浏览器不会缓存POST请求返回的内容)。
什么是幂等? 哪些方法是幂等的?
- 幂等方法是无论调用多少次都得到相同结果的HTTP方法
- 例如: a=4是幂等的, 但是a += 4就是非幂等的。
- 幂等方法客户端可以放心的安全的重新发送。
- 安全的判定标准是有没有修改数据库。
什么是HTTP的长连接
前提:因为http是基于TCP协议的应用层协议,每次进行HTTP的请求的时候都会进行三次握手和四次挥手, 建立和关闭连接开销很大(短连接)。
- 长连接: Connection: Keep-alive. 保持TCP连接不断开。 多个HTTP请求通过一个TCP连接发送。
- 如何区分不同的HTTP请求呢? 客户端告诉服务端发送的HTTP请求的长度, 通过Content-Length|Tranfer-Encoding:chunked (分块传输编码,当动态请求,不知道长度的时候使用)
cookie 和 session的区别
- Session(用户会话) 一般是服务器生成之后给客户端(通过url参数或者http的cookie字段)
- Cookie是实现session的一种机制, 通过HTTP的cookie字段来实现
- Session通过在服务器端保存sessionid识别用户,cookie存储在客户端。
- 服务器端的程序(框架之类的),通过(函数)设置cookie,发送给客户端,客户端下次带着cookie发送http请求,服务器解析cookie成sessionid获取用户数据。