有文档是这么描述的,各 app 之间通过 globalState 共享状态,也就是 URL 中的 ?_a=(...) 。各 app 会通过rison.decode($location.search()._a) 和rison.encode($location.search()._a) 设置和读取——跳转到"/visualize/create" 页面,相当于是这三个常用聚合的快速可视化操作。
路径文件kibana-5.5.2\src\core_plugins\kibana\public\discover\components\field_chooser\field_chooser.js
开发版本中打印$location.search()._a是这样的
discover?_g=()&_a=(columns:!(_source),index:'XXX*',interval:auto,query:(match_all:()),sort:!('@timestamp',desc))
而正式版本的是这样的
discover?_g=h@44136fa&_a=h@5b0efe2
我猜测应该是加密解密的问题,是哪里设置了吗,我对比了两个文件,内容应该都是一样的,但是呈现出来的为什么是不一样;
我通过将rison.encode('discover?_g=()&_a=(columns:!(_source),index:'XXX*',interval:auto,query:(match_all:()),sort:!('@timestamp',desc))')进行设置,打印出来的仍是
discover?_g=()&_a=(columns:!(_source),index:'XXX*',interval:auto,query:(match_all:()),sort:!('@timestamp',desc))
直接解密rison.encode('_a=h@5b0efe2')会报错
,怎么才能让其显示和开发环境一样的,或者怎么去将其解密成和开发版本一样
1 个回复
captainayou
赞同来自: medcl
在这个方法中State.prototype.toQueryParam
多了一层判断 if (!this.isHashingEnabled()) { return rison.encode(state); } 如果不符合条件会进行后面代码的hash处理,我理解是加密,否则直接就返回了