使用Cordova加载外部网站出现net::ERR_INVALID_RESPONSE错误求助
解决Cordova加载Google.com出现net::ERR_INVALID_RESPONSE的问题
结合你的Cordova 9.0.0 + Android 8.1.0环境和给出的config.xml配置,我帮你梳理几个大概率的问题点和解决步骤:
1. Google的UA检测拦截了Cordova WebView请求
Google的反爬机制会识别请求的User-Agent(UA),Cordova默认的WebView UA会被判定为非标准浏览器,直接返回无效响应。你可以通过修改UA模拟主流浏览器来绕过这个限制:
方法一:修改Android原生代码
找到Android项目下的MainActivity.java(路径:platforms/android/app/src/main/java/io/cordova/test/MainActivity.java),添加以下代码修改UA:
import android.webkit.WebSettings; import android.webkit.WebView; import org.apache.cordova.CordovaWebView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 保留原有代码,新增以下内容 CordovaWebView webView = this.appView; WebView nativeWebView = (WebView) webView.getEngine().getView(); WebSettings settings = nativeWebView.getSettings(); // 设置为Chrome浏览器的UA settings.setUserAgentString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"); }
方法二:使用Cordova插件修改UA
安装cordova-plugin-useragent插件,通过JS代码设置UA:
cordova plugin add cordova-plugin-useragent
然后在deviceready事件中添加:
document.addEventListener("deviceready", function() { // 设置模拟Chrome的UA UserAgent.set("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"); }, false);
2. 优化白名单配置(避免通配符的模糊性)
虽然你配置了<access origin="*" />和<allow-navigation href="*" />,但Cordova 9+的Android平台对通配符的解析可能存在严格性,建议明确指定Google域名:
<!-- 替换原有的access和allow-navigation配置 --> <access origin="https://*.google.com" /> <allow-navigation href="https://*.google.com" /> <allow-intent href="https://*.google.com" />
另外,如果你的项目中存在www/index.html文件(哪怕你没直接使用),需要确保里面的Content Security Policy(CSP)允许加载Google资源:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' https://*.google.com; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';">
3. 排查网络环境问题
- 先确认测试设备/模拟器能通过自带浏览器正常访问Google.com,部分地区需要特殊网络环境支持;
- 如果你用的是Android模拟器,检查代理设置是否正确,避免网络请求被拦截。
4. 清理WebView缓存
旧的缓存可能导致无效响应,你可以:
- 在设备设置中找到你的应用,清除缓存和数据;
- 或者在config.xml中添加禁用缓存的偏好:
<preference name="WebViewCacheEnabled" value="false" />
按照以上步骤逐一排查,应该能解决net::ERR_INVALID_RESPONSE的问题。
内容的提问来源于stack exchange,提问作者Ikenitenine
相关产品推荐
相关产品推荐

