【发布时间】:2014-08-25 14:36:51
【问题描述】:
在我当前的项目中,我们正在实现 Android 应用程序和服务器之间的会话处理。 现在按照我们的设计,Android 应用程序应该只接受 HTTP Cookie 并删除所有其他 cookie。 但是查看所有可用选项,我找不到任何类或方法可以帮助我识别 cookie 是否为 HTTPOnly。
我以以下方式存储 cookie:
connections = (HttpURLConnection) serverURL.openConnection();
// Setting cookies manager
java.net.CookieManager manager = new java.net.CookieManager();
manager.setCookiePolicy(new CookiePolicy() {
@Override
public boolean shouldAccept(URI uri, HttpCookie cookie) {
return cookie.getSecure();
}
});
CookieHandler.setDefault(manager);
connections.setDoInput(true);
connections.setDoOutput(true);
connections.setConnectTimeout(TIME_OUT);
connections.getOutputStream().write(data);
InputStream inputStream = connections.getInputStream();
CookieStore cookieJar = manager.getCookieStore();
if (cookieJar != null) {
List<HttpCookie> cookies = cookieJar.getCookies();
for (HttpCookie httpCookie : cookies) {
Log.i("yash", httpCookie.toString());
}
}
但是这个HttpCookie 没有任何HTTPOnly 方法。
通过一些谷歌浏览,我发现RFC 6265 具有 HTTPOnly 属性,并且它也屏蔽了 RFC 2965。但是为什么谷歌不支持这个 RFC 6265?
【问题讨论】:
-
很惊讶在 Android 上没有看到任何解决方法。我看到有关任何带有 httpOnly 标志的 cookie 是否会受到 Android 浏览器限制的信息存在冲突,即使您设法设置了标志(从服务器或通过客户端)。 Google 自己的 browser security doc 将 Android 列为唯一不支持 httpOnly 的平台,但我不确定该表的过时程度。
标签: java android cookies httponly