这里有新鲜出炉的 Java 并发编程示例,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要介绍了 java 中 Servlet Cookie 取不到值原因解决办法的相关资料, 需要的朋友可以参考下
java 中 Servlet Cookie 取不到值原因解决办法
现象:
在测试带 Cookie 的 HTTP 请求时发现,服务端用 request.getHeader("cookie") 可以去到值; 但是用 request.getCookies() 却不行
- Cookie mycookies[] = request.getCookies();
中永远获取不到 uid 的值;(80 端口号除外)
原因:
查了浏览器的具体 cookie 值,发现
http://localhost:8080/ 访问的时候,cookie 值放在 localhost 下, 服务器自动生成的 SESSIONID 也是存放在 localhost 路径下。
http://127.0.0.1:8080 / 访问的时候,cookie uid 值放在 127.0.0.1:8080 下,在 127.0.0.1:8080 下的 cookie 服务端的 Servlet 永远都获取不到;而服务器自动生成的 SESSIONID 则是在 127.0.0.1 下,与 uid 存放位置不同。
所以在服务端下发 cookie 的时候,
- String host = request.getHeader("host");
需要修改为
- if (host.indexOf(":") > -1) {
- host = host.split(":")[0];
- }
或者放弃设置
- mycookie.setDomain(host);
这样 cookie 值也是保存在 127.0.0.1 下的,与端口号不关联
当然是服务器已经有域名的就不会出现端口号下获取不到 cookie 的值
解决办法:
- String cookie = request.getHeader("cookie");
- Cookie mycookies[] = request.getCookies();
加上前面一行后面即可取到,
来源: http://www.phperz.com/article/17/0819/338200.html