使用 Tomcat 服务器,在conf/context.xml里面加上useHttpOnly后,也只能能给 JSESSIONID 加入 httpOnly 属性,并不能给应用程序里面的Cookie加上。
如在context.xml上加
<Context useHttpOnly="true">
而javax.servlet.http.Cookie本身也没有HTTPONLY属性。所以加的时候也不会有什么Cookie.setHttpOnly之类的方法。其它可以通过设置响应头实现。
比如之前若是写了一个addCookie方法如下
public static void addCookie(HttpServletResponse res, String cookieName,
String cookieValue) {
String v = "";
try {
v = URLEncoder.encode(cookieValue, "UTF-8");
}
catch (Exception e) {
}
Cookie c = new Cookie(cookieName, v);
c.setPath("/");
res.addCookie(c);
}
其实Cookie也只是服务器给浏览器设置了一个set-Cookie
响应头,我们可以利用response.setHeader来自己拼这个头开实现带httpOnly属性的的响应头。
可以稍作修改,改为响应头设置Cookie,在响应头里面把httpOnly给带上
public static void addCookie(HttpServletResponse res, String cookieName,
String cookieValue) {
String v = "";
try {
v = URLEncoder.encode(cookieValue, "UTF-8");
}
catch (Exception e) {
}
res.setHeader("SET-COOKIE", cookieName+"=" + v + "; Path=/" + "; HttpOnly" );
}