业务宣传网站建设,房地产网站开发,wordpress 删除 仪表盘,湘潭做网站 m磐石网络一、Cookie使用规范
cookie的存储空间非常有限且会携带在请求头中会浪费不必要的流量#xff0c;如果仅仅是为存储数据#xff0c;可以采用其他替代方案#xff0c;例如 webStorage#xff0c;非必要不使用cookie。
1、使用方法
注意#xff1a;过期时间时需转换成UTC格…
一、Cookie使用规范
cookie的存储空间非常有限且会携带在请求头中会浪费不必要的流量如果仅仅是为存储数据可以采用其他替代方案例如 webStorage非必要不使用cookie。
1、使用方法
注意过期时间时需转换成UTC格式
//创建 修改-设置过期时间为30分钟
document.cookieKNJoy;domain.docs.paic.com.cn;path/#/post;expires${new Date(new Date().getTime() 1800000).toUTCString()}
// 删除需要删除的cookie只需要将过期时间设置为当前时间即可
document.cookieKNJoy;domain.docs.paic.com.cn;path/#/post;expires${new Date().toUTCString()}
//查看
console.log(document.cookie)//cookie目前没有api可以直接拿到key值只能拿到所有的cookie再做过滤
// 取值方法参考
function getCookie (cookieName) {var allcookies document.cookievar cookiePos allcookies.indexOf(cookieName )if (cookiePos ! -1) {cookiePos cookieName.length 1var cookieEnd allcookies.indexOf(;, cookiePos)if (cookieEnd -1) {cookieEnd allcookies.length}allcookies allcookies.substring(cookiePos, cookieEnd) if (allcookies allcookies.indexOf({) 0) {return JSON.parse(allcookies || {});} else {return allcookies;}} else {return {}}},
2、使用场景
数据透传 cookie可以跨域在同一父域可以共享服务端创建的数据 若只涉及后端使用注意使用httpOnly属性全局数据可做全局数据缓存在cookie中。
3、替代方案
cookie前后端都可以写入在非必要不创建cookie的前提下前后端都应该对cookie保持克制
数据透传 url带参可以实现数据透传服务端创建的数据 通过responents返回再由前统一设置到请求参数体中全局数据使用webStorage替代存储例如localStorage、sessionStorage。
4、使用规范
1. key由14位大写字母、数字、下划线组成命名尽量精简 例如 userInfo可以命名为UI
//good
document.cookieUIJoy;domain.docs.paic.com.cn;path/#/post;expires${new Date(new Date().getTime() 1800000).toUTCString()}
document.cookieBP_Dndnakswwww;domain.docs.paic.com.cn;path/#/post;expires${new Date(new Date().getTime() 1800000).toUTCString()}//bad
document.cookieuserInfoJoy;domain.docs.paic.com.cn;path/#/post;expires${new Date(new Date().getTime() 1800000).toUTCString()}
document.cookiebankparam-datandnakswwww;domain.docs.paic.com.cn;path/#/post;expires${new Date(new Date().getTime() 1800000).toUTCString()}2. value单个长度不超过200个英文字符大小不超过400B
3. 禁止存入直接由JSON格式转成的字符串 直接由JSON转成字符串会增加{}、占用不必要的内存改为kv格式存储以连接符区分例k1k22
//好例子
var userInfo{name:joy,age:18
}
var data JSON.stringify(userInfo)var parseDataObject.keys(userInfo).reduce((cur,acc,index){let iconindex?:return cur iconaccuserInfo[acc]
},)//namejoyage18
document.cookieUI${parseData};domain.docs.paic.com.cn;path/#/post;expires${new Date(new Date().getTime() 1800000).toUTCString()}
//坏例子将json直接转成字符串存入cookie中
document.cookieUI${data};domain.docs.paic.com.cn;path/#/post;expires${new Date(new Date().getTime() 1800000).toUTCString()}4. cookie总大小不超过4094B总数量不超过20个
5. 禁止设置永久cookie应该根据评审设置合理过期时间可参考一般过期时间段7分钟、30分钟、7天、14天、1个月、2个月
//good
document.cookieUIJoy;domain.docs.paic.com.cn;path/#/post;expires${new Date(new Date().getTime() 1800000).toUTCString()}
//bad
document.cookieuserInfoJoy;domain.docs.paic.com.cn;path/#/post;6. 设置合理的domain与path浏览器会将domain和path都相同的cookie保存在一个文件里cookie间用*隔开合理的设置domain和path既可以满足开发需求也能非常的有效的减少cookie的范围继而避免影响其他页面
//good
document.cookieUIJoy;domain.docs.paic.com.cn;path/#/post;expires${new Date(new Date().getTime() 1800000).toUTCString()}
//bad
document.cookieuserInfoJoy;expires${new Date(new Date().getTime() 1800000).toUTCString()}7. 确保cookie有效不允许存入空值
//bad
document.cookieUInull;domain.docs.paic.com.cn;path/#/post;
document.cookieUI{};domain.docs.paic.com.cn;path/#/post;8. 明确为业务方自己使用的cookie用完后应立即删除。 5、客观限制
1. 长度限制
大多数浏览器支持最多可达 4096 字节的 Cookie。
2. 数量限制
大多数浏览器只允许每个站点保存 20 个 Cookie。如果试图保存更多的 Cookie则最先保存的 Cookie 就会被删除。还有些浏览器会对来所有站点的Cookie 总数作出限制这个限制通常为 300 个参考数据由于尚有部分业务条线需要支持ie7和ie8因此以此版本为示例其他IE版本暂不列出
限制类别限制IE7.0 8.0OperaFire FoxSafariChromeCookie个数每个域名 50个每个域名 30个每个域名 50个没有限制每个域名 53个Cookie大小4095字节4096字节4097字节4097字节4097字节 二、webStorage使用规范
localStorage、sessionStorage 是一种 web 存储方式存储大小可以达到5M相比cookie webStorage可以便于我们存储更多的数据我们可以在使用JavaScript 编写网站和 app 时用它来存储数据到浏览器中。
平时开发中localStorage、sessionStorage 用途是非常多在我们的开发中发挥着非常重要的作用
登录完成后 token 的存储用户部分信息的存储比如 昵称、头像、简介一些项目通用参数的存储例如 某个id、某个参数params项目状态管理的持久化例如 vuex的持久化、redux的持久化项目整体的切换状态存储例如 主题颜色、icon风格、语言标识 1、localStorage与sessionStorage的区别
1. 生存期 localStorage数据可以长久地存储也就意味着浏览器窗口关闭后数据也不会丢失**localStorage 在 IE 浏览器中IE8 以上才支持 localStorage localStorage 理论上来说是永久有效的即不主动清空的话就不会消失即使保存的数据超出了浏览器所规定的大小也不会把旧数据清空而只会报错。但需要注意的是在移动设备上的浏览器或各 Native App 用到的 WebView 里localStorage 都是不可靠的可能会因为各种原因比如说退出 App、网络切换、内存不足等原因被清空。 sessionStorage关闭浏览器窗口后数据会丢失失效 sessionStorage 的生存期顾名思义类似于 session只要关闭浏览器也包括浏览器的标签页就会被清空。由于 sessionStorage 的生存期太短因此应用场景很有限但从另一方面来看不容易出现异常情况比较可靠。
2. 作用域
localStorage 只要在相同的协议、相同的主机名、相同的端口下就能读取/修改到同一份 localStorage 数据;sessionStorage 比 localStorage 更严苛一点除了协议、主机名、端口外还要求在同一窗口也就是浏览器的标签页下。
3. API
localStorage
// 新增/修改
localStorage.setItem(key, value)
// 获取
localStorage.getItem(key)
// 删除
localStorage.removeItem(key)
//清空
localStorage.clear()sessionStorage
// 新增/修改
sessionStorage.setItem(key, value)
// 获取
sessionStorage.getItem(key)
// 删除
sessionStorage.removeItem(key)
//清空
sessionStorage.clear()2、命名
同源的两个项目它们的 localStorage sessionStorage 是互通的。两个项目都需要存储一个 key 为 name 的值那么这就会造成两个项目的 name 互相顶替的现象也就是 互相污染现象例如
存用户信息会使用 user 作为 key 来存储主题的时候用 theme 作为 key 来存储令牌时使用 token 作为 key 来存储
为了在命名上起到隔离作用推荐几种命名规则:
appKey缓存key值项目名缓存key值组织编码缓存key值
// good
localStorage.setItem( A1007_appkey , xxx)
localStorage.setItem( epecker_theme , primary)
localStorage.setItem( ARCH_epecker_token , 3234u390hedidn2eijdws-2e)// bad
localStorage.setItem( appkey , xxx)
localStorage.setItem( theme , primary)
localStorage.setItem( token , 3234u390hedidn2eijdws-2e)3、数据加密
将缓存的数据存在 localStorage、sessionStorage 中确实有利于的开发及数据的查看点击application就可以看到。但是产品一旦上线有些东西不希望被用户看到。这个时候就需要对缓存的数据进行加密了。
1. 网银的国密 js
16 年由网银采购仅支持非对称加密 sm2 的加解密不支持签名摘要和对称加密
注意事项
1、网银 js 的公钥跟其他开发语言和加密平台不一样由 xy 组成比如
java 的公钥keyC2C965F4A094CD3B5FD6449E1CC7E068983A5C1317DF35DFDD931AB022BBCF7E C3CA265BC1D52BF9B857074F9C9F34C52D60A9949E883538ACBA0409A6D8049E则 js 的公钥为(前一半为 x后一半为 y)X “C2C965F4A094CD3B5FD6449E1CC7E068983A5C1317DF35DFDD931AB022BBCF7EY “C3CA265BC1D52BF9B857074F9C9F34C52D60A9949E883538ACBA0409A6D8049E2、国密 java 版本 sm-crypto 公钥加密js 私钥解密失败如何解决 sm-crypto 的密文都做转换为大写而 js 支持小写把 sm-crypto 的密文转为小写即可正常解密。 2. 开源实现
支持国密的所有算法请自行下载
GitHub - JuneAndGreen/sm-crypto: 国密算法js版GitHub - sickworm/sm-series-crypto: SM2/SM3/SM4 in javascript implementation.
4、webStorage 使用方案
全局使用的东西共享的东西永久存储的东西储存在 localstorage 中不需要永久存储的东西在使用完毕之后要记得及时清除如果数据量过大就不要存储在本地了变为动态获取可以使用存储量更大的 Indexeddb不过有兼容性问题可以在实现方案中对要存储到 storage 中的东西做字数限制 三、其他
1、域名限制
由于浏览器的安全策略localstorage 是无法跨域的也无法让子域名继承父域名的 localstorage 数据这点跟 cookies 的差别还是较大的。
2、数据存储
sessionStorage 和 localStorage 不会自动把数据发送给服务器仅在本地保存。cookie 数据始终在同源的 http 请求中携带即使不需要即 cookie 在浏览器和服务器间来回传递。cookie 数据还有路径path的概念可以限制 cookie 只属于某个路径下ker 文章转载自: http://www.morning.xnbd.cn.gov.cn.xnbd.cn http://www.morning.dcpbk.cn.gov.cn.dcpbk.cn http://www.morning.fbpyd.cn.gov.cn.fbpyd.cn http://www.morning.pzbqm.cn.gov.cn.pzbqm.cn http://www.morning.qbfwb.cn.gov.cn.qbfwb.cn http://www.morning.srbbh.cn.gov.cn.srbbh.cn http://www.morning.khclr.cn.gov.cn.khclr.cn http://www.morning.crtgd.cn.gov.cn.crtgd.cn http://www.morning.fdjwl.cn.gov.cn.fdjwl.cn http://www.morning.llyjx.cn.gov.cn.llyjx.cn http://www.morning.rbktw.cn.gov.cn.rbktw.cn http://www.morning.dmwbs.cn.gov.cn.dmwbs.cn http://www.morning.ykwqz.cn.gov.cn.ykwqz.cn http://www.morning.bnpn.cn.gov.cn.bnpn.cn http://www.morning.grzpc.cn.gov.cn.grzpc.cn http://www.morning.mxtjl.cn.gov.cn.mxtjl.cn http://www.morning.tnjff.cn.gov.cn.tnjff.cn http://www.morning.xdjwh.cn.gov.cn.xdjwh.cn http://www.morning.thmlt.cn.gov.cn.thmlt.cn http://www.morning.mlfgx.cn.gov.cn.mlfgx.cn http://www.morning.rwmft.cn.gov.cn.rwmft.cn http://www.morning.mdnnz.cn.gov.cn.mdnnz.cn http://www.morning.ztjhz.cn.gov.cn.ztjhz.cn http://www.morning.rgxcd.cn.gov.cn.rgxcd.cn http://www.morning.rcjyc.cn.gov.cn.rcjyc.cn http://www.morning.fnpmf.cn.gov.cn.fnpmf.cn http://www.morning.mmzfl.cn.gov.cn.mmzfl.cn http://www.morning.pwwjs.cn.gov.cn.pwwjs.cn http://www.morning.kgslc.cn.gov.cn.kgslc.cn http://www.morning.fthcn.cn.gov.cn.fthcn.cn http://www.morning.ynbyk.cn.gov.cn.ynbyk.cn http://www.morning.pdbgm.cn.gov.cn.pdbgm.cn http://www.morning.krjrb.cn.gov.cn.krjrb.cn http://www.morning.khpx.cn.gov.cn.khpx.cn http://www.morning.lgphx.cn.gov.cn.lgphx.cn http://www.morning.kqwsy.cn.gov.cn.kqwsy.cn http://www.morning.lnrr.cn.gov.cn.lnrr.cn http://www.morning.spqtq.cn.gov.cn.spqtq.cn http://www.morning.jpgfx.cn.gov.cn.jpgfx.cn http://www.morning.kmlmf.cn.gov.cn.kmlmf.cn http://www.morning.zmyhn.cn.gov.cn.zmyhn.cn http://www.morning.fpngg.cn.gov.cn.fpngg.cn http://www.morning.kbkcl.cn.gov.cn.kbkcl.cn http://www.morning.knczz.cn.gov.cn.knczz.cn http://www.morning.gkgr.cn.gov.cn.gkgr.cn http://www.morning.xbyyd.cn.gov.cn.xbyyd.cn http://www.morning.tlpsd.cn.gov.cn.tlpsd.cn http://www.morning.wqfrd.cn.gov.cn.wqfrd.cn http://www.morning.gnfkl.cn.gov.cn.gnfkl.cn http://www.morning.nrtpb.cn.gov.cn.nrtpb.cn http://www.morning.cprls.cn.gov.cn.cprls.cn http://www.morning.kcdts.cn.gov.cn.kcdts.cn http://www.morning.fxzgw.com.gov.cn.fxzgw.com http://www.morning.kfqzd.cn.gov.cn.kfqzd.cn http://www.morning.qytby.cn.gov.cn.qytby.cn http://www.morning.lfcfn.cn.gov.cn.lfcfn.cn http://www.morning.wjfzp.cn.gov.cn.wjfzp.cn http://www.morning.vaqmq.cn.gov.cn.vaqmq.cn http://www.morning.txmlg.cn.gov.cn.txmlg.cn http://www.morning.ngqty.cn.gov.cn.ngqty.cn http://www.morning.gmnmh.cn.gov.cn.gmnmh.cn http://www.morning.hjlsll.com.gov.cn.hjlsll.com http://www.morning.yfnhg.cn.gov.cn.yfnhg.cn http://www.morning.ghxkm.cn.gov.cn.ghxkm.cn http://www.morning.fpzz1.cn.gov.cn.fpzz1.cn http://www.morning.lqgtx.cn.gov.cn.lqgtx.cn http://www.morning.wgqtt.cn.gov.cn.wgqtt.cn http://www.morning.bmssj.cn.gov.cn.bmssj.cn http://www.morning.phxns.cn.gov.cn.phxns.cn http://www.morning.lrybz.cn.gov.cn.lrybz.cn http://www.morning.njnqn.cn.gov.cn.njnqn.cn http://www.morning.hmqmm.cn.gov.cn.hmqmm.cn http://www.morning.fbzyc.cn.gov.cn.fbzyc.cn http://www.morning.wjplr.cn.gov.cn.wjplr.cn http://www.morning.ccphj.cn.gov.cn.ccphj.cn http://www.morning.xyhql.cn.gov.cn.xyhql.cn http://www.morning.qnxzx.cn.gov.cn.qnxzx.cn http://www.morning.xzgbj.cn.gov.cn.xzgbj.cn http://www.morning.tfznk.cn.gov.cn.tfznk.cn http://www.morning.dfrenti.com.gov.cn.dfrenti.com