【发布时间】:2018-08-06 11:28:11
【问题描述】:
我正在使用 Java servlet 将带有 JWT 信息的 cookie 返回给客户端。
我返回 2 个 cookie。
1 => Token_id,这个cookie存储了id_token
2 => refresh_token,这个token存储了token过期时要发送的刷新token。
问题是,这些信息太大了,所以浏览器会报这个错误:
431(请求标头字段太大)
为了解决这个问题,我想将 refresh_token 压缩存储,当我使用这些信息时我会解压缩。
我阅读了有关压缩的信息并尝试使用 GZIPCompress 字符串,如下所示:
public static String compress(final String str) throws IOException {
if ((str == null) || (str.length() == 0)) {
return null;
}
ByteArrayOutputStream obj = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(obj);
gzip.write(str.getBytes("UTF-8"));
gzip.flush();
gzip.close();
return obj.toString();
}
当我将压缩字符串添加到 cookie 时,我有这个异常:
Illegal character in cookie value
我无法将 refresh_token 存储在我的服务器中。 如何压缩大字符串以存储在 cookie 中?我需要减小 value cookie 的大小。
【问题讨论】: