Cookie
1. 什么是cookie?
什么是Cookie?
Cookie是存在内存中或硬盘中的一些数据,用来和服务器打交道。
http://en.wikipedia.org/wiki/HTTP_cookie
http://zh.wikipedia.org/wiki/Cookie
http://baike.baidu.com/view/835.htm
用途
- 记录用户登录信息(authentication),下次访问时可以不需要输入自己的用户名、密码
- 记录用户喜好,使网站个人化,如某个用户在CNN 网站,不想查看任何商务新闻,用户可以将之设置,下次访问时就不会再出现商务新闻。
- 网上购物,比如购买N种物品和统一结账时,从cookies中提取购买列表。
存放位置
Chrome for windows: C:\Users\UserName\AppData\Local\Google\Chrome\UserData\Default\Cookies文件,该文件是SqliteDB文件
IE: %appdata%\Microsoft\Windows\Cookies,该文件夹被隐藏,通过命令行可以看到
Android中webbrowser: Android中为安全的考虑,每个应用程序都会有独立的cookie,各个应用程序不能共享cookie
2. 原理
比如说我们访问某个网站:http://www.example.org/index.html
首先,浏览器第一次通过HTTP访问该网站。该网站收到请求后,通过Set-Cookie返回给browser,然后,browser在进行第二次访问时,将这些cookie顺便带过去,提供一些必要的信息。
3. Android中如何保存session cookies?
在Android中,Session cookie的特点是当关闭掉web browser,该cookies就会被清除掉。
所以,如果你想通过cookies保存用户登陆信息,做到在一段时间内不需要二次登陆,就需要自己保存好cookies,然后下次登陆时再设置一遍就可以了。
解决办法:在第一次login后,保存login cookie到share preference,下次登陆,先要remove掉过期的session cookies,然后再重新设置登陆cookies.
1. save
1 | String loginCookies = CookieManager.getInstance().getCookie(NetworkConstant.SERVER_URL); |
2. re-set
1 2 | CookieManager.getInstance().removeSessionCookie(); CookieManager.getInstance().setCookie(url, loginCookies); |