三人行必有我师

开发版5.5.2kibana中url的hash和正式版不也一样,如何解决?

Kibana | 作者 captainayou | 发布于2018年06月03日 | 阅读数:3045



有文档是这么描述的,各 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')会报错

,怎么才能让其显示和开发环境一样的,或者怎么去将其解密成和开发版本一样
已邀请:

captainayou

赞同来自: medcl

找到原因了:路径kibana-5.5.2\src\ui\public\state_management\state.js
在这个方法中State.prototype.toQueryParam
 

多了一层判断      if (!this.isHashingEnabled()) { return rison.encode(state); }  如果不符合条件会进行后面代码的hash处理,我理解是加密,否则直接就返回了

LOV}{7M8}D0VPAZ)TPM8UE.png

 

要回复问题请先登录注册