1. Cookie与Session的区别
HTTP 协议是无状态的,主要是为了让 HTTP 协议尽可能简单,使得它能够处理大量事务。
Cookie 用来保存状态信息。
用途:
- 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
- 个性化设置(如用户自定义设置)
- 浏览器行为跟踪(如跟踪用户行为)
创建过程:
- 服务器发送的响应报文包含 Set-Cookie 首部字段,客户端得到响应报文后把 Cookie 内容保存到浏览器中。
- 客户端之后对同一个服务器发送请求时,会从浏览器中取出 Cookie 信息并通过 Cookie 请求首部字段发送给服务器。
分类:
- 会话期 Cookie:浏览器关闭之后它会被自动删除,也就是说它仅在会话期内有效。
- 持久性 Cookie:指定过期时间(Expires)或有效期(max-age)之后就成为了持久性的 Cookie。
Cookie与Session的区别
- Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端。
- Cookie有大小限制以及浏览器存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关。
- Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击。
- Session保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。
2. 转发和重定向的区别
- 转发:指由服务器进行页面跳转。服务器直接访问要跳转的地址,将内容读取后发给浏览器。地址栏不发生变化,显示的是上一个页面的地址。请求域中的数据不会丢失,请求次数为 1 次。场景:用户登录某个网页后,浏览里面的其他模块。
- 重定向:指由浏览器端进行页面跳转。如果服务器返回重定向状态码,比如 301、302,浏览器就到新的网址重新请求资源。地址栏会发生改变。请求域中的数据会丢失,请求次数为 2 次。场景:用户注销后跳转到其他网站。