CrazyDailyQuestion icon indicating copy to clipboard operation
CrazyDailyQuestion copied to clipboard

2019-9-16:说说cookie的工作机制以及webview如何与http共享cookie?

Open MicroKibaco opened this issue 6 years ago • 2 comments

MicroKibaco avatar Sep 15 '19 11:09 MicroKibaco

Cookie的工作机制

将一些基本信息存放在本地,比如身份识别信息,用户在本站的一些信息,当需要用到的时候,提取使用。这些信息就被称作cookie。

cookie的存放

cookie信息有服务器向客户端发送,在头信息中有下边这样的信息

Set-Cookie:user=ZhangSan

这样客户端接到之后就会存放起来,这个信息被称为cookie。

cookie的使用

当一个cookie存在的时候,并且条件允许,就会被使用。cookie的值会被放到http请求头中,类似于下边这样

Cookie:user=ZhangSan

服务端接收到这个信息之后,就会根据这个信息作出相应的判断。

WebView和http共享cookie

先将http中的cookie取出来,然后放到webview中 参考自 Android 应用内HttpClient 与 WebView 共享 Cookie

DefaultHttpClient httpclient=....;
String toUrl="https://cap.cityu.edu.hk/studentlan/details.aspx.....";
 
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
 
if (!cookies.isEmpty()){
    CookieSyncManager.createInstance(this);
    CookieManager cookieManager = CookieManager.getInstance();
        //sync all the cookies in the httpclient with the webview by generating cookie string
    for (Cookie cookie : cookies){
        String cookieString = cookie.getName() + "=" + cookie.getValue() + "; domain=" + cookie.getDomain();
        cookieManager.setCookie(toUrl, cookieString);
        CookieSyncManager.getInstance().sync();
    }
}

gys0000 avatar Sep 16 '19 16:09 gys0000

楼上这个方法,我用过。。

cookie是本身浏览器(请求方请求的一些数据信息,比如一些电商网站的游客的购物车),发送到服务器,但是服务器不需要保存这些数据所以在服务器上使用header的setcookies XXX=BBBB 发还本地保存。本地请求时候会在header 中带上cookies: XXXX=BBBB 早前可以进行用户验证,

ycpbyht avatar Sep 24 '19 14:09 ycpbyht