从java中的cookie读取电子邮件字符串
我的应用程序需要将用户的电子邮件地址存储在 cookie 中,以便我可以预先填充登录表单(用户名 == 电子邮件地址)
。 我在 JavaScript 中设置了 cookie 值。 如果我从 JavaScript 读取它,我会得到 [email protected]
。 如果我在 Firefox 的 cookie 查看器中查看它,我会得到 [email protected]
。
然而,当我尝试在 Java 的服务器端读取它时,我只得到 foo
。
我需要在这里进行某种编码/解码吗? 如果是这样,我该如何以 JavaScript 和 Java 都可以解码的方式做到这一点?
提前致谢! -迈克尔
My application needs to store the users email address in a cookie so that I can pre-populate a login form (username == email address)
. I set the cookie value in JavaScript. If I read it from JavaScript, I get [email protected]
. If I look at it in the cookie viewer in Firefox I get [email protected]
.
When I try to read it on the server-side in Java however, I only get foo
.
Do I need to do some sort of encoding/decoding here? If so, how do I do it in a way that can be decoded by both JavaScript and Java?
Thanks in advance!
-Michael
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
来自 javax.servlet.http.Cookie doco for setValue(String):
我猜你需要在传入(通过 JavaScript)和传出(通过 Java)时对其进行 BASE64 编码
From the javax.servlet.http.Cookie doco for setValue(String):
I'm guessing you need to BASE64 encode it on the way in (via JavaScript) and on the way out (via Java)
您需要转义 cookie 的值部分。
You need to escape the value part of your cookie.
我找到了两个解决方案。 这是第一个。
添加回 Base64 编码字符串的填充。 灵感来自 http://fi.am/entry/ urlsafe-base64-encodingdecoding-in-two-lines/
在此解决方案中,JavaScript 保持不变(base64 编码所有内容),服务器端如下所示:
在 JavaScript 端,您只需要确保您使用了 base64对值进行编码:
I have found two solutions to this. Here is the first one.
Add back in padding to Base64 encoded strings. Inspiration for this came from http://fi.am/entry/urlsafe-base64-encodingdecoding-in-two-lines/
In this solution, the JavaScript stays the same (base64 encode everything) and the server side looks like:
On the JavaScript side, you just need to make sure you base64 encode the values:
第二种解决方案只是对 Base64 编码的字符串进行 URLEncode。 我在这里使用通用编解码器进行编码。 Java 代码:
但现在我也必须在 JavaScript 端对其进行解码......
编码:
解码:
The second solution is just to URLEncode the Base64 encoded string. I'm using commons codec to do the encoding here. Java Code:
But now I have to decode it on the JavaScript side as well...
Encode:
Decode: