我正在浏览器中设置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标准的文档?
答案 0 :(得分:2)
如果要在URI参数中传递数据,您可能希望对数据进行uri编码,从而转义保留的特殊字符。
This question/answer thread应该告诉您需要了解的所有信息。
(!)请记住在下次阅读之前对其进行uri-decode,然后再在内部使用它。
答案 1 :(得分:2)
它不是特定于Cookie的,但Base64有方言。例如,
< p>要在URL中使用标准Base64,需要将“+”,“/”和“=”字符编码为特殊的百分比编码十六进制序列('+'='%2B','/'='%2F'和'='='%3D')。记得在再次阅读时解码这些序列。
答案 2 :(得分:1)
你应该没事,我看过SAML响应值之前包含这样的特殊字符。当有疑问时编码值:)你有奇怪的结果吗?