我正在开发一个移动应用程序,可以向用户展示一个网站。 问题是该网站使用 Google 的 reCAPTCHA(V2 和 V3 版本)。 在 iOS 应用程序上,当页面加载到 InAppWebView 中时,会发送 JS 警报:
“与 reCAPTCHA 的连接不可用。请检查您的互联网连接,然后重试”。
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 会这样做,并且似乎也阻止了它。
我还注意到,AJAX 请求 reCAPTCHA 的 URL 缺少主机。
记录代码:
developer.log('There is a potential request of AJAX: ${ajaxRequest.url.toString()} ${ajaxRequest.url?.host}');
我试图手动将主机设置为 https://www.google.com。
我期待的是reCATPCHA能够在iOS上通过。
我还在 ChromeSafariBrowser 中打开了该页面,一切正常。
感谢您的所有帮助。 我很感激。
雅库布
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),
)),