1

webview_flutter: ^1.0.7用来在我的应用程序上显示网页:

WebView(
     initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
     javascriptMode: JavascriptMode.unrestricted,
     onWebViewCreated: (webViewController) async {
            _controller.complete(webViewController);

在 initState 方法中,我有以下代码:

  @override
  void initState() {
    super.initState();
    cookieManagerr.clearCookies();    
    _controller.future.then((controller) async {
      wvc = controller;
      // wvc.evaluateJavascript('document.cookie = "SESSION-Test=token";');
      Map<String, String> header = {'Cookie': 'ASP.NET_SessionId=222'};
      wvc.loadUrl(
        '${widget.url}?BranchName=&latitude=${latitude}&longitude=${longitude}',
        headers: header,
      );
    });
  }

但运行后没有任何内容添加到标题中。

如果我将代码更改为:

 WebView(
                initialMediaPlaybackPolicy:
                    AutoMediaPlaybackPolicy.always_allow,
                initialUrl:
                    '${widget.url}?BranchName=&latitude=${latitude}&longitude=${longitude}',
                javascriptMode: JavascriptMode.unrestricted,
                onWebViewCreated: (webViewController) async {
                  webViewController.evaluateJavascript(
                      'document.cookie = "SESSION-Test=token";');

我收到了这个错误:

I/chromium( 6239): [INFO:CONSOLE(1)] "Uncaught SecurityError: Failed to set the 'cookie' property on 'Document': Access is denied for this document.", source:  (1)
D/EGL_emulation( 6239): eglMakeCurrent: 0xd2aea420: ver 2 0 (tinfo 0xb48e41f0)
I/chromium( 6239): [INFO:CONSOLE(17932)] "You are using OSRM's demo server. Please note that it is **NOT SUITABLE FOR PRODUCTION USE**.

如何设置适用于 ios 和 android 的 cookie?

4

1 回答 1

0

首先,您的html可能有问题。例如,https ://github.com/js-cookie/js-cookie/issues/531表示如果脚本在具有沙盒属性的 iframe 中执行,则可能会引发错误。

其次,尝试使用另一种方式而不是 cookie 怎么样?例如,要将一些变量从 Flutter 传递给 javascript,您可以:

  1. webViewController.evaluateJavascript('window.hello="world";')
  2. 或者,您可以webViewController.evaluateJavascript('window.your_js_method("world");')
于 2020-11-25T13:35:57.573 回答