Spring 云配置服务器 returns 额外的反斜杠

Spring Cloud Config Server returns extra backslash

我正在 Vault 中编写一个类似于 secret1=test1\ntest2 的秘密,并在使用 @Value("${secret1}") 的 Spring 启动应用程序配置中使用它。但是,通过 Spring 云配置服务器从 Vault 成功检索后,secret1 值将变为 test1**\n**test1。所以添加了一个额外的反斜杠。这是我需要在应用程序中做的一个非常小的更改以删除多余的反斜杠,但我想以正确的方式解决这个问题。我怎样才能防止这种额外的反斜杠添加发生?

Vault 本身不会与 \n 混淆。在命令行试试这个:

vault kv put secret/new-line secret1="test1\ntest2"

在线路上,它会这样发送 JSON:

{
  "data":{
    "secret": "test1\ntest2"
  }
}

取回秘密带来相同的价值:

vault kv get --field data secret/new-line 
map[secret:test1\ntest2]

您的 \n 可能被解释为在 JSON 中转换并发送到 Vault。也许将秘密放入 Vault 的任何东西都不会使用与您的代码相同的 library/technology?

确保在将 \n 保存在 Vault 中时对其进行转义。得到它会让 \n 安然无恙地回来。