我已经使用 native fetch API 登录了我的应用程序。我现在需要加载图像,所以将其加载到 <WebView>
,但是 webview 没有使用 webview 之外的 fetch API 中的 cookie。是否可以告诉 webview 使用这些 cookie?
最佳答案
您可以使用 postMessage() 将包含您的 cookie 内容的消息发布到您的 Webview。
您需要获取 Webview 的 ref,然后将消息发布到您的 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 组件的注入(inject) JavaScript Prop 注入(inject) 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' }}
/>
关于react-native - WebView 应该使用与 fetch 相同的 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47340210/