我可以在Cookie数据中使用=或+吗?

时间:2013-11-13 01:39:21

标签: json http cookies base64

我正在浏览器中设置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标准的文档?

3 个答案:

答案 0 :(得分:2)

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

This question/answer thread应该告诉您需要了解的所有信息。

(!)请记住在下次阅读之前对其进行uri-decode,然后再在内部使用它。

答案 1 :(得分:2)

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

< p>

要在URL中使用标准Base64,需要将“+”,“/”和“=”字符编码为特殊的百分比编码十六进制序列('+'='%2B','/'='%2F'和'='='%3D')。记得在再次阅读时解码这些序列。

答案 2 :(得分:1)

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