美文网首页
react-native 安卓webview设置header不起

react-native 安卓webview设置header不起

作者: MasterPaul | 来源:发表于2018-11-29 15:33 被阅读0次

    react-native 文档里面有设置webview 头部信息的写法如下

    可是设置了根本不起作用,不知道有没有小伙伴遇到过同样的问题,找了好多资料都没有作用,最终各种尝试下终于解决这个问题。

    1、首先要研究一下webview的header从哪里来?

    webview创建连接的时候服务器会返回一个session cookies,如图,

    cookie

    安卓里面有一个CookieManager单例类,用来存储和管理cookie的,在WebView创建连接之前,会通过CookieManager.getInstance().getCookie(url); 先获取到这个cookie,然后保存到本地,存储路径如下

    webview创建连接的时候会先判断本地的这个cookie是否存在,如果存在再拿到这个cookie作为头部创建连接,然后我们自己创建的header就不起作用了。

    解决方法如下:

    1、在进入webview页面的时候我们手动检查一下本地是否存在url的cookie,可以使用react-native-CookieManager第三方库:

    2、 构建自己的header,上面打印的cookie值,OAOP_JSESSIONID=1365F51FBA11A8AFAC7D1536D3C501CD

    这个sessionID作为我们作为自己的header里的一部分,一定不能替换成自己的,这个很重要,我试着把它换成别的结果连接失败。

    拿到这个以后去构建自己的header,比如我自己创建的header

    header = {

        'cookie':OAOP_JSESSIONID=1365F51FBA11A8AFAC7D1536D3C501CD;TOKEN=123KFJSDK;

    }

    3、删除本地的cookie,我是直接删除了所有的cookie

    CookieManager.removeAllCookies()

    4、创建连接,就是让组件显示webview

    this.setState({

        showWebview:true;

    })

    render(){

    return( this.state.showWebview ? 

    ( <WebView

                    source={{

                        uri:link,

                        headers:header(自己构建的) }} /> ) : null

    )}

    5、这个时候webview再从本地找cookie就找不到了,因为我们已经把它删除了,就能用我们自定义的headerl

    相关文章

      网友评论

          本文标题:react-native 安卓webview设置header不起

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