Flutter给WebView设置Cookie(Session)

Posted HackShendi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter给WebView设置Cookie(Session)相关的知识,希望对你有一定的参考价值。

Hello, I'm Shendi
最近整 WebView,因页面需要登录才能进入,所以需要设置登陆凭证
在网上没找到想要的答案,大多数都是在页面加载完使用执行js的方式
这里记录一下

首先引入 WebView 依赖,并在文件内引入 webview

# WebView
webview_flutter: 3.0.0
import 'package:webview_flutter/webview_flutter.dart';

WebView有一个属性为 initialCookies 可以初始化 Cookie
接收 WebViewCookie(name, value, domain)

WebView(
	initialUrl: url,
	initialCookies: [WebViewCookie(name: "名称", value: "值", domain: "域"), ...],
	javascriptMode: JavascriptMode.unrestricted,
)

上面那样就已经完成了 Cookie 的设置

对于 Session 来说,首先还需要获取到 SessionId,一般第一次请求服务器时获取(登录),获取 SessionId 可以参考 Flutter进行HTTP请求并保存登陆状态(dio)

获取的内容大概如下,需要自己拆分

JSESSIONID=sessionid; Path=/; HttpOnly

拆分代码如下

int len = cookie.indexOf('=');
String name = cookie.substring(0, len);
cookie = cookie.substring(len);
len = cookie.indexOf(';');
String value = cookie.substring(1, len);
cookie = cookie.substring(len+1);

其中 domain 是指定作用域,一般为域名,例如 www.baidu.com

以上是关于Flutter给WebView设置Cookie(Session)的主要内容,如果未能解决你的问题,请参考以下文章

Flutter给WebView设置Cookie(Session)

Flutter关于webview_flutter设置cookie

Flutter - 在 WKWebView 中阻止 Webview Cookie

WebView颤动:初始化url时无法将'cookie'设置为标题

在颤动的 webview 之间共享 cookie

小程序webview设置cookie延时很长