IE下获取不到Response添加的cookie的解决方法
2013-11-15 16:13
435 查看
我使用java写了一段代码,向客户端写入一个cookie,内容是登陆成功的用户名,以便下次可以自动填充,但是在测试的时候发现firefox没有任何问题,ie则完全获取不到已经写入到客户端的cookie。
服务端代码 loginAction.java
客户端代码 login.jsp
在百度上查询了好久也没有查询到结果,于是自己用ie的开发者工具进行跟踪,JSESSIONID这个cookie每次访问应用的时候都能收到,但是我写入到客户端的确收不到。
后来仔细对比JSESSIONID和自己写的cookie发现,JSESSIONID这个cookie并没有设置domain这个参数,而我的设置了。然后我便更改代码,将cusername.setDomain("localhost"); 这一段注释掉,于是程序按照我预想的那样接收到了服务端写入的cookie,并且再次登陆的时候用户名自动填充了,cookie生效了!
虽然cookie成功生效了,但是我脑中依然充满了疑惑,为什么注释掉就行了呢,再次百度,有些人说 localhost 不符合IE cookie的domain规范,半信半疑中。再次动手更改host文件,加入一段
更改服务端代码 cusername.setDomain("www.lqq.com");
访问http://www.lqq.com/SSOAuth/login.jsp,登陆成功后,再次访问这个页面用户名自动填充了,成功啦!
看来就是我设置domain的时候域名不规范导致的问题!
PS:cookie规范文档请查看这里:http://curl.haxx.se/rfc/cookie_spec.html
服务端代码 loginAction.java
String username = req.getParameter("username"); String pwd = req.getParameter("pwd"); String action = req.getParameter("action"); if(login(username,pwd)){ String newId = java.util.UUID.randomUUID().toString().replace("-", ""); req.getSession().setAttribute("LOGIN_USER", username); Cookie cusername = new Cookie("username",username); cusername.setMaxAge(60000); cusername.setDomain("localhost"); cusername.setPath("/SSOAuth"); resp.addCookie(cusername); resp.sendRedirect("index.jsp"); }else{ resp.sendRedirect("login.jsp"); }
客户端代码 login.jsp
<body> <form action="login.action" method="post"> 用户名:<input type="text" name="username" value="${cookie.username.value}"><br/> 密 码:<input type="password" name="pwd"> <input type="submit" value="提交"> </form> </body>
在百度上查询了好久也没有查询到结果,于是自己用ie的开发者工具进行跟踪,JSESSIONID这个cookie每次访问应用的时候都能收到,但是我写入到客户端的确收不到。
后来仔细对比JSESSIONID和自己写的cookie发现,JSESSIONID这个cookie并没有设置domain这个参数,而我的设置了。然后我便更改代码,将cusername.setDomain("localhost"); 这一段注释掉,于是程序按照我预想的那样接收到了服务端写入的cookie,并且再次登陆的时候用户名自动填充了,cookie生效了!
虽然cookie成功生效了,但是我脑中依然充满了疑惑,为什么注释掉就行了呢,再次百度,有些人说 localhost 不符合IE cookie的domain规范,半信半疑中。再次动手更改host文件,加入一段
127.0.0.1 www.lqq.com
更改服务端代码 cusername.setDomain("www.lqq.com");
访问http://www.lqq.com/SSOAuth/login.jsp,登陆成功后,再次访问这个页面用户名自动填充了,成功啦!
看来就是我设置domain的时候域名不规范导致的问题!
PS:cookie规范文档请查看这里:http://curl.haxx.se/rfc/cookie_spec.html
相关文章推荐
- IE下获取不到Response添加的cookie的解决方法
- jquery、js ajax添加的表单的控件在火狐(Firefox)下获取不到值的解决方法
- js添加的表单在火狐下获取不到数据的解决方法
- js获取不到动态添加的标签的值的解决方法
- .ocx注册失败以及IE使用<object>获取不到.ocx方法的解决办法
- js添加的表单在火狐下获取不到数据的解决方法
- .NET获取不到js写的cookie解决方法
- jquery $.post ie获取不到返回值的解决方法
- 解决Request.Cookies获取不到客户端回发的Cookie
- Fiddler获取ResponseBody乱码问题解决方法----oSession.GetResponseBodyAsString();
- IE iframe 中 js 的 cookie 读写不到的解决办法
- NetBox环境下ajax用get获取数据,中文乱码的问题解决:对象不支持此属性或方法: 'Response.CharSet'
- 页面获取不到spring实例化services解决方法
- 配置android开发环境时出现eclipse获取不到ADT的解决方法
- input设置为disabled提交后获取不到该值的解决方法
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法 ?
- 使用 HttpWebResponse 无法获取cookie的解决办法
- 获取文件创建时间时获取不到的解决方法
- KindEditor提交用jquery获取不到数据的解决方法
- centos dhcp获取不到ip解决方法 Bringing up interface eth0: Device eth0 does not seem to be present,delaying initialization.