美文网首页
Android H5页面中iframe页面请求时没有携带Cook

Android H5页面中iframe页面请求时没有携带Cook

作者: alexlee1987 | 来源:发表于2019-07-30 17:35 被阅读0次

    一、问题描述

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


    图1 内嵌页面没有携带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了。

    图2 内嵌页面携带Cookie了

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

    相关文章

      网友评论

          本文标题:Android H5页面中iframe页面请求时没有携带Cook

          本文链接:https://www.haomeiwen.com/subject/metorctx.html