reCAPTCHA 在 iOS 版 Flutter InAppWebView 上不可用

问题描述 投票:0回答:1

我正在开发一个移动应用程序,可以向用户展示一个网站。 问题是该网站使用 Google 的 reCAPTCHA(V2 和 V3 版本)。 在 iOS 应用程序上,当页面加载到 InAppWebView 中时,会发送 JS 警报:

“与 reCAPTCHA 的连接不可用。请检查您的互联网连接,然后重试”。

InAppWebView 设置

InAppWebViewController? webViewController;
  InAppWebViewGroupOptions webViewGroupOptions = InAppWebViewGroupOptions(
    crossPlatform: InAppWebViewOptions(
      useShouldInterceptAjaxRequest: true,
      useShouldOverrideUrlLoading: true,
      mediaPlaybackRequiresUserGesture: false,
      useShouldInterceptFetchRequest: true,
      allowUniversalAccessFromFileURLs: true,
      allowFileAccessFromFileURLs: true
    ),
    android: AndroidInAppWebViewOptions(
      useHybridComposition: true
    ),
    ios: IOSInAppWebViewOptions(
      allowsInlineMediaPlayback: true,
      sharedCookiesEnabled: true
    )
  );

版本详情

InAppWebView 版本:^5.7.2+3 - https://pub.dev/packages/flutter_inappwebview 颤振版本:>=3.0.3 <4.0.0

观察结果

我注意到同一应用程序的 Android 版本不会向 CAPTCHA 服务 /recaptcha/api 发出请求,而 iOS 会这样做,并且似乎也阻止了它。

enter image description here

我还注意到,AJAX 请求 reCAPTCHA 的 URL 缺少主机。

enter image description here

记录代码:

developer.log('There is a potential request of AJAX: ${ajaxRequest.url.toString()} ${ajaxRequest.url?.host}');

我试图手动将主机设置为 https://www.google.com

我期待的是reCATPCHA能够在iOS上通过。

我还在 ChromeSafariBrowser 中打开了该页面,一切正常。

感谢您的所有帮助。 我很感激。

雅库布

ios flutter webview flutter-inappwebview
1个回答
0
投票

la falta de informacion esta bastante fea,aqui tengo la solucion que me funciono a mi,me toco ir activanto una por una de las opciones Existentes,y esta fue la que me funciono.

 ios: IOSInAppWebViewOptions(
                    applePayAPIEnabled: true,
 ),

un codigo un poco mas completo.

InAppWebView(
                initialUrlRequest: URLRequest(
                  url: Uri.parse(
                      "url"),
                ),
                initialOptions: InAppWebViewGroupOptions(
                  ios: IOSInAppWebViewOptions(
                    applePayAPIEnabled: true,
                    // sharedCookiesEnabled: true,
                  ),
                  crossPlatform: InAppWebViewOptions(
                      useOnLoadResource: true,
                      useShouldInterceptFetchRequest: true,
                      useShouldInterceptAjaxRequest: true,
                      useOnDownloadStart: true,
                      useShouldOverrideUrlLoading: true,
                      javaScriptEnabled: true,
                      preferredContentMode:
                          UserPreferredContentMode.MOBILE),
                )),
© www.soinside.com 2019 - 2024. All rights reserved.