【问题标题】:Can I use = or + in Cookie data?我可以在 Cookie 数据中使用 = 或 + 吗?
【发布时间】:2013-11-25 10:55:06
【问题描述】:

我正在努力在浏览器中设置一个 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 标准的文档讨论此类问题?

【问题讨论】:

标签: json http cookies base64


【解决方案1】:

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

This question/answer thread 应该告诉你所有你需要知道的。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-26
        • 2014-06-20
        • 1970-01-01
        • 2018-10-20
        • 1970-01-01
        • 2014-12-21
        • 1970-01-01
        • 2019-08-02
        相关资源
        最近更新 更多