1

我正在努力在浏览器中设置一个 cookie,我想将一串数据进行 base64 编码作为值。对 base 643 编码的调用是微不足道的

public static String encodeToBase64(String input) {
    return new String(Base64.encodeBase64(input.getBytes()));
}

但我想知道,我可以在 cookie 中包含 + 或 = 吗?我的 cookie 生成设备看起来像这样

String parameterData = Base64Utils.encodeToBase64(JsonUtils.objectToJson(parameters));
String expires = epochMillisToExpirationString(getExpiration());
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("data=");
stringBuilder.append(parameterData);

有没有人看到这个崩溃?是否有任何关于 Cookie 标准的文档讨论此类问题?

4

3 回答 3

2

如果您在 URI 参数中传递数据,您可能希望对数据进行 uri 编码,转义保留的特殊字符。

这个问题/答案线程应该告诉你所有你需要知道的。

(!)记住在内部使用它之前下次阅读它时对它进行 uri 解码。

于 2013-11-13T01:43:09.747 回答
2

它不是特定于 cookie 的,但Base64有方言。例如,

要在 URL 中使用标准 Base64,需要将 '+'、'/' 和 '=' 字符编码为特殊的百分比编码的十六进制序列('+' = '%2B'、'/' = '%2F' 和 '=' ='%3D')。当您再次读入这些序列时,请记住对其进行解码。

于 2013-11-13T01:47:25.200 回答
1

你应该没问题,我以前见过 SAML 响应值包含这样的特殊字符。当有疑问时编码值:) 你有奇怪的结果吗?

于 2013-11-13T01:49:10.933 回答