在 Ionic 4 应用程序中无法绕过 CORS

Posted

技术标签:

【中文标题】在 Ionic 4 应用程序中无法绕过 CORS【英文标题】:Not able to bypass CORS in Ionic 4 application 【发布时间】:2019-09-23 12:18:21 【问题描述】:

我正在尝试使用 this GitHub project 控制我的 GoPro Fusion。每当我运行POST 请求时,我都可以控制它,但现在我试图通过运行GET 请求来监听http://10.5.5.9/gp/gpControl/status 上的状态变化。

每次我请求此 URL 时,我都会在我的 safari 检查器中获得以下信息:

由于访问控制检查,XMLHttpRequest 无法加载 http://10.5.5.9/gp/gpControl/status。 错误:未捕获(承诺中):响应状态:0 对于 URL:null 加载资源失败:Access-Control-Allow-Origin 不允许 Origin ionic://localhost。

我一直在使用ionic cordova run ios -l -c 运行我的应用程序,并尝试在ionic.config.json 中设置代理:

"proxies": [
  
    "path": "/gp/gpControl",
    "proxyUrl": "http://10.5.5.9"
  
]

但这不起作用,我反而认为由于代理不起作用,我应该尝试在没有实时重新加载服务器的情况下安装它,但我仍然得到完全相同的错误。

如果我在移动浏览器中访问 url,它会很好地加载 json,只有当我尝试在其上运行 GET 时,它才会失败并出现 2 个 cors 错误。

我实际运行GET 的代码如下所示:

constructor(
  private http: Http
) 
  setInterval(() => 
    this.get('http://10.5.5.9/gp/gpControl/status').then(a => 
      console.log(a);
    );
  , 1500);


public get(path, params = ): Promise<any> 
  return this.http.get(this.baseUrl + path, params).toPromise();

我已经解决这个问题超过 12 个小时了,完全不知道接下来要尝试什么,所以非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

只需使用cordova-plugin-advanced-http即可解决

在标准 Swift 项目上使用 AngularFire 进行测试并且没有任何问题后,我安装了上述插件并且所有请求都按预期工作。

【讨论】:

以上是关于在 Ionic 4 应用程序中无法绕过 CORS的主要内容,如果未能解决你的问题,请参考以下文章

在 ionic 4 上使用 Angular 7 帖子时出现 Cors 策略错误

如何绕过 CORS 并从 CORS 阻止的 API 获取数据?

移动设备上的 Ionic 4 CORS 问题

如何通过我的 api 调用绕过 CORS 限制? [复制]

HTTP POST 请求 Ionic 3 给出 403 禁止

IOS CORS问题ionic 1项目和android完美运行