作为网站的第一方开发者,完全不使用 cookie,改为用 storage API 在客户端存储,用 http API 与服务端交互,可行吗?
###如果是 vue,rn这种单体应用,前端就是纯前端,和 接口交互都是走的 ajax 这种,你完全可以用 js+ localstorage 来实现 cookie 的逻辑. 但是,如果页面上的请求,如果不是由 js 触发的.你没办法把 localStorage 里的信息带上去的话,这就不行了. cookie 的 http-only 标识,这个你就没办法处理了.只要放到了 localstorage 里,js 就可以谁便撸了.
###先说结论: 可行;
但是有缺点:
cookie
会在每次的http请求中自动带上, 你如果写在localStorage
的话需要每次手动带上cookie
可以直接由后端http请求中的set-cookie
自动存储在客户端,localStorage
需要手动存储cookie
可以设置javascript不可直接获取值, 但是localStorage
的话就不行, 因此有安全问题- 按照定义,
cookie
用于存储用户标识,localStorage
用于存储其他标识, 比如保存用户名
总结: 如果存储用户的标识(用户登录状态等), 可用cookie
; 其他的可使用localStorage
;
cookies 弥补了http的无状态性, 通过很多的头信息可以方便的操作cookies,其实这是一个后端的东西,你要是用storage那么就摒弃了很多http特性,而且还要手动实现原有http比较好实现的功能,比如token的维护
###只要你觉得行就行。
如果没有什么需求是Storage实现不了而Cookie 实现得了的,有什么不行的呢?
如果你都明确了有些需求只能用Cookie,那就不行。
我能想到保留 cookie 而不使用 Storage 的唯一原因是考虑老版本浏览器的兼容性问题。