JAVA技术
  当前位置:首页 > 技术支持 > JAVA技术
如何利用response.addHeader()方法设置cookie
发布时间:2017-09-25 浏览:3164次
  
将cookie设置成HttpOnly是为了防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。

 如何在Java中设置cookie是HttpOnly呢?
Servlet 2.5 API 不支持 cookie设置HttpOnly
http://docs.oracle.com/cd/E17802_01/products/products/servlet/2.5/docs/servlet-2_5-mr2/

建议升级Tomcat7.0,它已经实现了Servlet3.0
http://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/Cookie.html

但一般不是能随意升级系统的。
 那就介绍另外一种办法:
 利用HttpResponse的addHeader方法,设置Set-Cookie的值
cookie字符串的格式:key=value; Expires=date(或Max-Age=毫秒数); Path=path; Domain=domain; Secure; HttpOnly

//设置cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");

//设置多个cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");
response.addHeader("Set-Cookie", "timeout=30; Path=/test; HttpOnly");

//设置https的cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; Secure; HttpOnly");

目前主流的WEB服务器,均应有设置cookie的HttpOnly的方法。一般默认HttpOnly没有开启,只需开启即可。
下面以Resin服务器为例,设置cookie的HttpOnly参数的方法为:
1、Resin3.1.X服务器,用文本编辑器打开resin.conf,找到:
<!--
         - For security, set the HttpOnly flag in cookies. 
        - <cookie-http-only/>
--> 
可以看出cookie-http-only被引去,打开即可。
2、Resin4.0.X,用文本编辑器打开resin.xml
参照如下格式,添加cookie-http-only到你的虚拟主机配置中即可(软件默认配置文档没有<cookie-http-only>参数,自行增加即可,具体参考官方文档):
<resin xmlns="http://caucho.com/ns/resin"> 
<cluster id=""> 
 <host id="www.foo.com">
 <web-app id="" root-directory="/var/resin/foo"> 
 <cookie-http-only>true</cookie-http-only>
 <web-app id="">
 </host> 
...... 
</cluster> 
</resin>

 
 
    
 
 
版权所有 © 2005-2024 安徽省艾佳信息技术有限公司 皖ICP备06002923号  皖公网安备 34019202000659号
地址:安徽省合肥市蜀山区望江西路69号西湖国际广场 电话:0551-64935878 邮箱:admin@ajsoft.cn