angular - 如何处理(不修复!) Ionic Framework 中的 CORS 异常?
问题描述
我们在 iPhone 和 Android 上安装了一个 Angular/Ionic 应用程序。该应用程序调用我们的 IIS Web 服务器上的 API。服务器启动后,一切正常。
但是,在我们部署新版本的 API 网站时,我们希望我们的应用程序显示一个维护页面。目前,在部署过程中,我们在 API 站点的根文件夹中创建了一个 app_offline.htm 文件,这是使网站脱机并在 IIS 中显示维护页面的常用方法。
不幸的是,这意味着来自 Ionic 应用程序的 CORS 预检请求也会返回 503 http 错误代码;我猜想 IIS 将整个站点都关闭了。我们无法在手机上的 Angular/Ionic 应用程序中处理这个 503 错误,因为预检请求是由浏览器触发的。我们为每个请求添加自定义标头,这是不可避免的。最终结果是 API 站点关闭时不显示维护页面。
在部署 API 站点时,有没有办法在我们的 Ionic/Angular 应用程序中显示维护页面?也许通过配置 IIS 以允许预检请求,即使 app_offline.htm 已到位,以某种方式处理 Ionic 端的 503,甚至停止来自 Ionic 应用程序的预检 OPTIONS 请求?
注意:我不是在问如何配置我的站点来解决 CORS 问题,该部分已经到位。我想在部署支持 API 站点时在应用程序中发生预期的 CORS 错误时进行处理。
解决方案
出于安全原因,JavaScript 代码无法获得有关 CORS 请求出现问题的详细信息。所有代码都知道发生了错误。确定具体出了什么问题的唯一方法是查看浏览器的控制台以获取详细信息。
您可以在 developer.mozilla.org上找到更多信息
我的建议是在拦截器内处理任何其他请求错误。
然后,您可以使用错误对象上的属性(例如状态 0)来决定是否应该检查您是否处于维护模式,或者您可以在遇到任何错误时始终检查模式。
为此,您可以app_offline.htm
通过 Web 请求检查页面当前是否已启动,或者您可以使用单独的 API 来确定您当前是否处于维护模式。
然后根据该响应采取适当的措施。
推荐阅读
- angular - 找不到模块“@angular/core/src/metadata/lifecycle_hooks”-primeng/table/table.d.ts
- wordpress - Wordpress - Elementor 自定义小部件 - 条件控件
- c# - 如何在页面中查看此特定数据?
- javascript - NodeJs 在使用异步瀑布时面临问题
- php - 按键计算数组值
- c - 虽然返回 si_addr 与 sigwaitinfo 函数的偏移量导致分段错误
- docker - 访问在端口 8080 上运行 REST API 的 docker 容器的 Travis CI 连接错误
- arrays - 在 PowerShell 中处理大型数组
- javascript - 如何将拖放的图像绘制到画布上
- c# - MQTTNet 监听主题消息