问题背景: 当升级 Cordova 10 到 Cordova 11 时,Android 应用程序的 WebView 可能会出现 CORS 问题。这可能会导致您的应用程序无法访问来自其他域的资源。
以下是解决此问题的步骤:
1.在 config.xml 文件中添加以下内容:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (error != null && error.getPrimaryError() == SslError.SSL_INVALID) {
handler.cancel();
} else {
handler.proceed();
}
} else {
handler.proceed();
}
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
// Handle error
}
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
super.onReceivedHttpError(view, request, errorResponse);
// Handle http error
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// Handle page finish event
}
});
参考文献: