You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 22:52:35