参考:http://www.blogjava.net/simon1006/archive/2009/09/07/294210.html

今天测试设置和获取Cookie遇到了一点小问题,很奇怪的问题;
把J2ee服务部署在本地 8080端口;访问任何一个服务时,如果客户端没有cookie,则下发cookie,
 如果客户端已经有了该cookie的值就不下发,代码逻辑如下:
String uid="";
Cookie mycookies[] = request.getCookies();
 if (mycookies!= null) {
            for (int i = 0; i < mycookies.length; i++) {
                if ("uid".equalsIgnoreCase(mycookies[i].getName())) {
                    uid=mycookies[i].getValue();
                }
             }
        }
     if(!StringUtils.isNull(uid)){
      //do nothing
  }else{
  String host=request.getHeader("host");
 uid=UUID.create();
 Cookie  mycookie = new Cookie("uid",uid);
 mycookie.setDomain(host);
 mycookie.setMaxAge(93312000);//三年
 response.addCookie(mycookie);
}
System.out.println("uid is>"+uid);
1、访问:
   http://localhost:8080/
   以及内部的页面,打印uid的值是相同的;符合要求
2、访问:
  http://127.0.0.1:8080
  以及内部的页面, uid每次都获取得值都是不同的;
两者的区别仅仅的访问的方式不同,如果用ip访问
  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的值;

Servlet的Cookie值保存与获取相关推荐

  1. cef谷歌内核浏览器获取cookie值并保存

    目的:获取cookie存入数据库,以实现下次登录的自动完成 知识点:事件和委托 建立cookie读取对象,继承接口ICookieVisitor public class CookieVisitor : ...

  2. Jquery操作Cookie,保存商品ID值至本地文件中

    1.什么是Cookie? cookie 小甜饼?呵呵! 想吃了吧!Cookie就是服务器存本地的一个文件,可以在服务器上创建,也可以在客户端创建.主要是用来存储用户的一些记录,比如浏览过的商品等.目前 ...

  3. php cookie expires,php cookie类(设置、获取、删除cookie值)

    分享一个php cookie操作的类,可以设置cookie.获取cookie.删除cookie. 代码: /** * php cookie类 * class:PHP_COOKIE * by www.j ...

  4. 如何获取cookie值

    获取cookie的值 在上一节谈到了读取cookie的名与值,可以看到,只能够一次获取所有的cookie值,而不能指定cookie名称来获得指定的值,这样就必须从cookie中找到你要那个值,因此处理 ...

  5. 前台setcookie之后从后台取出来_后台设置Cookie值,前台进行获取

    后台设置Cookie值,前台进行获取 通过cookie取得用户的个性化信息 注意事项:1.中文的存在,需要进行utf-8的编码,之后再进行解码即可,避免乱码. 之所以 有时会用到 cookie.set ...

  6. python获取cookie值的方法_Python获取Cookie、设置Cookie的N种方法

    方法一通过python的requests包: import requests url = "https://fanyi.baidu.com" res = requests.get( ...

  7. cookie分号后面没有值_Cookie的属性(cookie的设置、获取和删除)

    每个cookie都有四个可选的属性,他们分别控制cookie的生存周期.可见性.安全性等. Cookies最初设计时,是为了CGI编程.但是,我们也可以使用Javascript脚本来操纵cookies ...

  8. JavaEE使用servlet、cookie实现用户登陆和数据保存

    文章目录 一.项目分析 二.项目功能(只实现了记住密码功能!其他的学会了再补上!) 三.制作界面 四.项目实现结果(只实现了记住密码功能!!其他的等我学到了那部分再去补上!!) 一.项目分析 根据要求 ...

  9. Js设置cookie值和获取cookie值

    一.应用场景: 将值存储在cookie里,页面间调用cookie值. //设置cookie function setCookie(name, value) {document.cookie = nam ...

最新文章

  1. 不允许程序员透露薪资!!!凭啥?
  2. 文巾解题 196. 删除重复的电子邮箱
  3. Oracle查询给表起别名
  4. SimGAN-Captcha代码阅读与复现
  5. 农信计算机资料录入试题,农村信用社考试计算机测试题(一)
  6. 反射如何拿到私有属性_JAVA中反射机制的价值
  7. poj 1236 Network of Schools
  8. leetcode 73. 矩阵置零
  9. 【数据结构1.3笔记】研究内容
  10. linux getit文件乱码,winzipaes文件名乱码解决方案
  11. Java基础语法实例(2)——实习第二天
  12. gun linux定义,linux gun make 入门
  13. 7大排序时间复杂度对比、以及优化
  14. linux 蓝牙串口 调试,linux 蓝牙串口 连接android手机调试
  15. windows下载及安装redis
  16. windows 查询域名DNS解析
  17. jquery.qrcode.js生成二维码
  18. 透过案例看清API接口的作用——演示1688商品详情接口
  19. [bzoj1022] [SHOI2008]小约翰的游戏John
  20. Typora导出Word

热门文章

  1. AJAX 跨域请求(转发)
  2. xx学OD -- 消息断点 RUN跟踪(下)
  3. 酶促反应动力学_酶促反应动力学实验
  4. 互联网协议 — 使用 Wireshark 调试 HTTPS 及 HTTP/2 流量
  5. Docker 容器技术 — Overview
  6. NR 5G 密钥与安全详解
  7. 【洛谷 P3975】 [TJOI2015]弦论(后缀自动机)
  8. PowerShell批量设置PATH环境变量
  9. 嘿!我用python帮我干这些事
  10. Laravel/Lumen搭建服务器性能测试