WebView应使用与fetch相同的cookie

时间:2017-11-16 22:30:52

标签: react-native react-native-android

我已使用原生fetch API登录我的应用。我现在需要加载图像,因此我将其加载到<WebView>中,但是webview不使用来自webview之外的fetch API的cookie。是否可以告诉webview使用这些cookie?

2 个答案:

答案 0 :(得分:3)

您可以使用postMessage()将包含Cookie内容的邮件发布到Webview。

您需要获取Webview的参考,然后将消息发布到您的网页视图。

let webviewRef = null;

const cookiesContent = 'My cookies bla bla bla'

render() {
    return (
        <WebView
            onLoad={() => webviewRef.postMessage(cookiesContent)}
            ref={webview => { webviewRef = webview; }}
            source={{ uri: 'https://YourUrl' }}
        />
    );
}

然后在您的网站上,您可以创建cookie并使用它

<script>
    document.addEventListener("message", function(data) {
        document.cookie=`cookiesName=${data.data}`;
    });
</script>

如果您不是网站的所有者,您仍然可以尝试使用注册的Webview Component的Java道具注入javascript。

const JsCode = 'document.addEventListener("message", function(data) {
        document.cookie=`cookiesName=${data.data}`;
    });';

  <WebView
        injectedJavaScript={JsCode}
        onLoad={() => webviewRef.postMessage(cookiesContent)}
        ref={webview => { webviewRef = webview; }}
        source={{ uri: 'https://YourUrl' }}
    />

答案 1 :(得分:0)

您可以使用https://github.com/react-native-community/cookies获取cookie并将其重新设置