关于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获取用户数据。