本地主机和设备上的 Ionic 的 CORS 问题[关闭]

Posted

技术标签:

【中文标题】本地主机和设备上的 Ionic 的 CORS 问题[关闭]【英文标题】:CORS issue with Ionic on localhost and on device [closed] 【发布时间】:2020-12-22 22:13:54 【问题描述】:

我有一个 Ionic 项目正在对我在 Azure 中的数据库和一个外部 API 进行 API 调用。我不断收到 CORS 错误:

错误请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'http://localhost:8100'。

我在网上看到这可能发生在浏览器中,但问题是当我通过 apk 安装应用程序时也遇到了这个问题。此外,最奇怪的是我大约有 10% 的时间会出现这个错误。这意味着我可以在一分钟内执行所有的 GET 和 POST 请求,然后在下一分钟我不断收到这些错误。我不知道这个错误是如何只能偶尔触发的,所以如果有人知道如何解决这个问题会很棒。

【问题讨论】:

【参考方案1】:

您必须在您的原生 android 项目 android/app/src/main/res/xml 目录中创建一个 network_security_config.xml 文件,其中包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
      <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
      </domain-config>
</network-security-config>

然后在您的 AndroidManifest.xml 文件中添加:android:networkSecurityConfig="@xml/network_security_config,使其看起来像这样:

<application 
             android:networkSecurityConfig="@xml/network_security_config" 
             android:allowBackup="true" 
             android:icon="@mipmap/ic_launcher" 
             android:label="@string/app_name" 
             android:roundIcon="@mipmap/ic_launcher_round" 
             android:supportsRtl="true" 
             android:theme="@style/AppTheme">

或者,您可以使用平台原生 HTTP 库,而不是使用 HTTPClient (angular),您可以在此处找到:https://github.com/capacitor-community/http 如果您使用的是 Capacitor,或者https://ionicframework.com/docs/native/http 如果您使用的是 Cordova,您不会不再有 CORS 问题。

【讨论】:

成功了!谢谢! 不客气!!

以上是关于本地主机和设备上的 Ionic 的 CORS 问题[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

android live设备上的离子和电容器的CORS问题

Ionic - $http 在移动设备中工作,但在浏览器中显示 CORS 和预检错误

使用 SSL 从设备上的 Ionic 应用程序调用本地开发服务器上的 API

处理离子中的CORS问题

Ionic CLI 6.13.0 上的 CORS 问题

从我的本地主机客户端发出请求而没有 cors 错误