关于Androidwebviewcookie的信息

今天给各位分享Androidwebviewcookie的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

关于Android的okHttp+webview的cookie跨域问题

一个原生电商项目,可能会需要接入一个合作方的H5项目(域名不一样),这就可能涉及到一下信息的共享的问题,信息共享的方式有很多种,最常用的就是cookie

比如购物车,登陆这样的信息和状态的维护,都会使用cookie的方式

原生项目一般涉及到2个方面:网络框架okHttp3 + Webview

okHttp3  =   一般存取以HttpUr(协议+域名+端口)的方式去存取cookie

取 =loadForRequest(httpUrl)  

存 = saveFromResponse(httpUrl,cookies)

如果要使得不同的域名的接口都能拿到cookie信息,需要以该目标链接HttpUr保存一次cookie

webview一般使用域名就可以,下面的url只代表域名

webview收不到服务端的cookie

昨天项目中碰到了一个bug,我们的客户端webview加载了我们的一个新闻详情页,在详情页里面发表一条评论,但是刷新页面后,刚才发表的评论却没有显示在评论列表里。

第一直觉,用其他的浏览器试试这一流程,发现没有问题。

这就奇怪了,难道是webview的设置有问题吗?但是因为不知道新闻评论这个功能的前端后端逻辑,随便修改webview的设置只能是盲人摸象,乱改一通,就算改好了可能也不知道为什么这样改就可以了。

本着科(zhuang)学(bi)的精(yu)神(wang),我先仔细想了想几个可能导致bug的疑点:

一开始以为使用的缓存页面,所以没有刷出来评论,可用fiddler抓包发现2个现象:

抓包可以说明两件事:

所以找了下后端的开发,了解了下评论逻辑。上传的评论一般都需要审核(人工审核),但是为了能在审核之前让用户可以马上看到自己刚发表的评论(防止以为是个bug),所以在服务端把刚评论的message种到了cookie里面,只要拿到cookie就可以显示出评论了。

然而抓包过程中,并没有发现服务端发送任何cookie,查了很久,终于发现最终的原因:

在Android 4.4及以下的系统,webview是默认接收第三方cookie的。但是,从android 5.0开始,webview默认是不接受第三方cookie的。

我们的服务端和页面刚好不在同一个域里面,而我的测试机是android 6.0的,所以导致接受不到cookie。

既然知道了根源,也就好解决了,接收第三方cookie的开关是:

另外,注意到第一个参数是webview,说明这个设置不是全局的,这一点android官网也做了说明

所以, 如果新建了一个webview,这个webview默认还是不接收第三方cookie的,这点要特别注意!

感谢您的耐心阅读,以上如果有错误的地方或者理解有失偏颇,请留言指正,谢谢~~

android webview 如何存储cookie

在App中嵌入网页,使用Nativie方式登录,然后将cookie保存到WebView中,实现免登录功能。同步Cookie到WebView的方法可以参考下面的代码:

/**

* Sync Cookie

*/

private void syncCookie(Context context, String url){

try{

Log.d("Nat: webView.syncCookie.url", url);

CookieSyncManager.createInstance(context);

CookieManager cookieManager = CookieManager.getInstance();

cookieManager.setAcceptCookie(true);

cookieManager.removeSessionCookie();// 移除

cookieManager.removeAllCookie();

String oldCookie = cookieManager.getCookie(url);

if(oldCookie != null){

Log.d("Nat: webView.syncCookieOutter.oldCookie", oldCookie);

}

StringBuilder sbCookie = new StringBuilder();

sbCookie.append(String.format("JSESSIONID=%s","INPUT YOUR JSESSIONID STRING"));

sbCookie.append(String.format(";domain=%s", "INPUT YOUR DOMAIN STRING"));

sbCookie.append(String.format(";path=%s","INPUT YOUR PATH STRING"));

String cookieValue = sbCookie.toString();

cookieManager.setCookie(url, cookieValue);

CookieSyncManager.getInstance().sync();

String newCookie = cookieManager.getCookie(url);

if(newCookie != null){

Log.d("Nat: webView.syncCookie.newCookie", newCookie);

}

}catch(Exception e){

Log.e("Nat: webView.syncCookie failed", e.toString());

}

}

使用上面的方法可以将Cookie同步到WebView中,这样浏览网页时即可实现免登录。

但是在实际使用过程中会出现Cookie并未保存成功,每次都会跳转到登录页面应为初始化WebView时漏掉了重要的东西。可以参考下面代码设置WebView。

/**

* init WebView Settings

* */

private void initWebViewSettings(){

// myWebView.getSettings().setSupportZoom(true);

// myWebView.getSettings().setBuiltInZoomControls(true);

// myWebView.getSettings().setDefaultFontSize(12);

// myWebView.getSettings().setLoadWithOverviewMode(true);

// 设置可以访问文件

myWebView.getSettings().setAllowFileAccess(true);

//如果访问的页面中有Javascript,则webview必须设置支持Javascript

myWebView.getSettings().setJavaScriptEnabled(true);

myWebView.getSettings().setUserAgentString(MyApplication.getUserAgent());

myWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

myWebView.getSettings().setAllowFileAccess(true);

myWebView.getSettings().setAppCacheEnabled(true);

myWebView.getSettings().setDomStorageEnabled(true);

myWebView.getSettings().setDatabaseEnabled(true);

}

完成以上两步操作,再次运行程序,就会发现,打开网页后不会再跳转到登录页面了。

Androidwebviewcookie的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、Androidwebviewcookie的信息别忘了在本站进行查找喔。


【免责声明】:

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

【关于转载】:

本站尊重互联网版权体系,本站部分图片、文章大部分转载于互联网、所有内容不代表本站观点、不对文章中的任何观点负责、转载的目的只用于给网民提供信息阅读,无任何商业用途,所有内容版权归原作者所有
如本站(文章、内容、图片、视频)任何资料有侵权,先说声抱歉;麻烦您请联系请后台提交工单,我们会立即删除、维护您的权益。非常感谢您的理解。

【附】:

二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

注:本站资源来自网络转载,版权归原作者和公司所有,如果有侵犯到您的权益,请第一时间联系我们处理!

-----------------------------------------------------------------------------------------------------------

【版权声明】:

一、本站致力于为源码爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、如有内容侵犯您的版权或其他利益的,请编辑邮件并加以说明发送到站长邮箱。站长会进行审查之后,情况属实的会在三个工作日内为您删除。
-----------------------------------------------------------------------------------------------------------


内容投诉
源码村资源网 » 关于Androidwebviewcookie的信息

1 评论

您需要 登录账户 后才能发表评论

发表评论

欢迎 访客 发表评论