Android H5页面中iframe页面请求时无法携带cookie的问题解决方法

一、问题描述

  最近修复一个日常开发很少遇到也很少会关注的问题,具体问题是在项目中接入了公司前端同事开发的H5页面,这个H5页面内部接入了第三方的页面(后面通过分析是以iframe方式嵌入H5页面的),从公司内部H5页面跳转到第三方页面时有些机型cookie获取不到。具体现象如下图:
在这里插入图片描述

  问题分析:当H5页面中使用iframe内嵌一个页面时,由于内嵌页面和外部页面域名不同,导致cookie存在跨域的问题,,因此内嵌的页面无法获取外部页面的cookie,内嵌页面在请求时也就无法携带外面页面的cookie。

二、解决方法

  通过查找资料发现CookieManager有接口设置可以解决cookie的跨域问题,具体是在Webview初始化时设置CookieManager.getInstance().setAcceptThirdPartyCookies(),代码设置如下:

if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
    CookieManager.getInstance().setAcceptThirdPartyCookies(mWebView,true);
}

  官方文档对方法CookieManager.getInstance().setAcceptThirdPartyCookies(WebView webview, boolean accept)的说明:

英文:Sets whether the WebView should allow third party cookies to be set.
中文:设置WebView是否允许设置第三方的cookie。

  设置CookieManager.getInstance().setAcceptThirdPartyCookies()之后抓包结果如下图,可以看到内嵌页面的访问已经携带cookie了。

在这里插入图片描述

  如果感觉我的文章对您有用,请给个喜欢,如果有疑问,也欢迎在下方留言,谢谢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值