`
bingoohuang
  • 浏览: 10550 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

COOKIE值中包括等号

    博客分类:
  • WEB
阅读更多

系统中有一些值使用BASE64编码后存储在COOKIE中,当编码后的字符串最后有一个或者两个等号(=)时,使用Request.getCookies().getValue()会丢失等号,再BASE64解码时产生错误.

https://issues.apache.org/bugzilla/show_bug.cgi?id=44679,可以看到这个链接里面的讨论.

里面提到:

org.apache.tomcat.util.http.ServerCookie.ALLOW_EQUALS_IN_VALUE system property
that was introduced in Tomcat 6.0.24.  Looks like Mark has seen the light. :)
I just wanted to update this issue so everyone that needs this feature is aware
of it.

处理方法:
1) 直接从Http Head里面取Cookie的值,然后自己解析,保留value中的等号.(Cookie值的格式: name=value;name2=value2;name3=value3

2) Base64解码前,计算长度,补充等号后再解码

public static String decodeBase64(String s) {
        switch(s.length()%4) {
            case 3:
                s+= "==="; break; // 注:其实只需要补充一个或者两个等号,不存在补充三个等号的情况
            case 2:
                s+= "=="; break;
            case 1:
                s+= "="; break;
            default:
        }
        return new BASE64Encoder().decode(s.getBytes())););
    }

    public static String encodeBase64(String s) {
        String encoded = BASE64Encoder().encode(s.getBytes())));
        return encoded.replaceAll("[\n=]", "");
    }

备注:

Cookie规范介绍

 
分享到:
评论

相关推荐

    通过js来设置cookie和读取cookie,实现登陆时记住密码的功能

    3. 使用`decodeURIComponent`解码键和值,注意值可能包含多个等号,需要正确处理。例如: ```javascript function getCookie(name) { var cookies = document.cookie.split(';'); for (var i = 0; i ; i++) { ...

    jscript中使用cookie

    如果值中包含这些特殊字符或中文,可以使用`escape()`函数编码,取值时使用`unescape()`解码。例如: ```javascript document.cookie = "str=" + escape("I love ajax"); // 实际存储的值为:str=I%20love%20ajax `...

    前端Cookie工具,获取Cookie数据,获取Cookie数据key名称,清除站点所有Cookie数据

    以下是一个简单的函数,用于从`document.cookie`中提取特定key的Cookie值: ```javascript function getCookieValue(key) { const cookies = document.cookie.split(';'); for (let i = 0; i ; i++) { let ...

    documentCookie的使用

    - `escape()`:此方法用于对字符串进行URL编码,确保Cookie值中的特殊字符能安全地存储。在设置Cookie时,应对值进行`escape()`处理,避免包含URL中不允许的字符。 - `unescape()`:与`escape()`相反,用于解码URL...

    C#基于WebBrowser获取cookie的实现方法

    总结来说,C#中基于WebBrowser控件获取cookie的实现主要包括以下几个步骤: 1. 初始化WebBrowser控件,并添加`DocumentCompleted`事件处理器。 2. 当页面加载完成后,调用`GetCookiesFromWebBrowser`方法。 3. 在`...

    js操作cookie(增删改查)

    这个函数会返回与给定名称匹配的Cookie值,如果找不到对应名称的Cookie,将返回null。 三、更新Cookie 更新Cookie实际上是先删除旧的Cookie,然后创建一个同名的新Cookie。这是因为`document.cookie`不支持直接修改...

    js操作cookie

    每个Cookie通常包含一个名字、值、过期时间、路径和域等属性。JavaScript通过`document.cookie`属性与Cookie进行交互,但需要注意的是,这个属性是一个字符串,而非对象,因此操作起来有一些特殊。 ### 二、...

    js中cookie的使用详细分析.docx

    由于可能包含多个cookie,因此需要解析这个字符串以获取特定的cookie值。 ```javascript function getCookie(name) { var cookieArr = document.cookie.split(";"); for (var i = 0; i ; i++) { var ...

    js中cookie的使用详细分析

    由于Cookie的值不能包含某些特殊字符(如分号、逗号、等号和空格),在存储可能包含这些字符的数据时,需要使用`escape()`函数进行编码。同样,读取Cookie后,应使用`unescape()`函数进行解码。 3. **Cookie属性**...

    取网页COOKIE(001).rar

    5. **示例代码**:以下是一个简单的JavaScript函数,用于获取指定名称的Cookie值: ```javascript function getCookie(name) { var cookieArr = document.cookie.split(";"); for (var i = 0; i ; i++) { var ...

    js控制的cookie

    由于 Cookie 的名和值中不允许使用某些特殊字符,如分号、逗号、等号及空格,因此需要使用 `escape()` 函数对这些字符进行编码。例如: ```javascript // 存储包含空格的 Cookie 值 document.cookie = "message=" +...

    JavaScript中cookie工具函数封装的示例代码

    在JavaScript中封装cookie工具函数,通常需要实现以下几个核心功能:获取全部的cookie值、设置新的cookie、获取特定cookie的值、删除一个cookie以及检查特定的cookie是否存在。通过函数封装,可以简化cookie的操作,...

    cookie读写示例

    本示例主要关注JavaScript中的Cookie操作,包括读取和写入Cookie,这对于登录和首页访问的判断至关重要。 一、Cookie的基本概念 Cookie是由服务器端创建并发送到客户端(浏览器)的一小段文本信息,存储在用户的...

    javascript经典特效---cookie的写入.rar

    - 创建一个键值对字符串,键和值之间用等号分隔。 - 如果有其他属性(如过期时间、路径、域等),则以分号加空格作为分隔符添加到字符串后面。 - 将这个字符串赋值给`document.cookie`。 示例代码如下: ```...

    用js正确判断用户名cookie是否存在的方法

    此外,`decodeURIComponent`用于解码Cookie值,因为它们在存储时可能经过URL编码。 在实际应用中,可能还需要处理其他情况,比如Cookie过期、多个同名Cookie(某些浏览器允许)等。但是,上述代码提供了一个基本的...

    Javascript 读后台cookie代码

    本例中的知识点还包括了如何使用正则表达式来解析cookie值。正则表达式是用于匹配字符串中字符组合的一种表达式,可以用来识别具有特定模式的字符串。这里,正则表达式被用来从document.cookie字符串中提取与指定主...

    JavaScript基础篇——浅谈cookie

    因此,如果想要获取特定名称的Cookie值,就需要对这个字符串进行解析。一种常用的方法是: ```javascript function getCookie(key) { var arr1 = document.cookie.split(';'); // 将整个Cookie字符串按分号分割...

    PHP CURL中传递cookie的方法步骤

    另外,通常情况下,没有必要对cookie数据进行urlencode编码,但如果不进行编码的话,确保cookie的值不包含URL中不合法的字符,否则可能导致请求无法正确发送或者接收方无法解析cookie数据。例如,当我们设置cookie为...

    JS操作Cookie,子键(增删改查)纯js页面

    由于可能有多个Cookie,我们需要根据分号和等号分割,找到对应的Cookie并解析其值。 ```javascript function getCookie(name) { var cookies = document.cookie.split(';'); for (var i = 0; i ; i++) { var ...

    JS操作Cookie写入和读取实例代码

    通过以上知识点的详细解释,可以看出JS操作Cookie的写入和读取主要涉及对document.cookie字符串的处理,包括拼接字符串设置Cookie值,以及解析字符串获取特定Cookie的值。掌握了这些方法之后,可以更有效地在Web开发...

Global site tag (gtag.js) - Google Analytics