IntelliJ HTTP Client提取JSON值存环境变量Token鉴权失败问题
问题原因
使用IntelliJ HTTP Client响应脚本提取Token存入全局变量后,鉴权提示Token格式错误,核心原因是内置的response.body.json快捷解析拿到的属性值,在部分客户端版本中会携带JSON序列化残留的包裹双引号,或是未转换为原始字符串类型。这种情况下最终发出的请求头里Token值会被额外包裹一层双引号,格式类似Bearer "my-secret-token",不符合Bearer Token格式规范,服务端解析时就会抛出malformed错误。
修复方法
两种方案任选其一即可:
- 取值后手动调用
toString()转成原始字符串再存储,修正脚本行如下:
> {% client.global.set("auth_token", response.body.json.token.toString()); %}
- 放弃内置JSON快捷解析,手动解析响应体后再取值,兼容性最好,不会出现多余字符问题,脚本写法如下:
> {% const responseData = JSON.parse(response.body); client.global.set("auth_token", responseData.token); %}
注意事项
- 改完脚本后先执行获取Token的请求,在客户端的环境变量配置页检查
auth_token的值,确认前后没有多余的双引号、换行或空白字符,再发起后续鉴权请求。 - 对接Keycloak授权接口时注意,Keycloak返回的访问令牌字段名是
access_token,不是示例里的token,实际取值时要把路径对应改成access_token,否则会取到空值触发格式错误。
内容的提问来源于stack exchange,提问作者Fernando Ortega Gorrita
相关产品推荐
相关产品推荐

