文章目录

使用 Tomcat 服务器,在conf/context.xml里面加上useHttpOnly后,也只能能给 JSESSIONID 加入 httpOnly 属性,并不能给应用程序里面的Cookie加上。

如在context.xml上加

1
<Context useHttpOnly="true">

而javax.servlet.http.Cookie本身也没有HTTPONLY属性。所以加的时候也不会有什么Cookie.setHttpOnly之类的方法。其它可以通过设置响应头实现。

比如之前若是写了一个addCookie方法如下

1
2
3
4
5
6
7
8
9
10
11
12
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给带上

1
2
3
4
5
6
7
8
9
10
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" );
}
文章目录