Ionic 1 WkWebView iOS - 无法加载资源:访问控制允许不允许源 ionic://localhost



1. 简短介绍

最近,我们更新了我们的应用程序,只是为了符合 Apple 关于 Apple 签名流程的新规则,但这还不够。

Apple 阻止了我们的发布,因为我们目前没有采用新的 Web 视图 WkWebView。

所以我们决定使用以下插件:( https://github.com/ionic-team/cordova-plugin-ionic-webview (

看到XHR的问题太好了,file://请求的问题被新版本修复,但仍然存在一个重要的CORS块。

2. 问题

正如标题所说,我们对服务器执行的每个调用仍然会继续收到错误" 无法加载资源:访问控制-允许不允许源 ionic://localhost...">

3. 我们做了什么

阅读意识,我们将以下过滤器添加到我们的服务器配置 (web.xml( 中

<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>

在我们的配置中.xml正如指南所描述的那样,我们添加:

<allow-navigation href="ionic://localhost/*"/>
<allow-navigation href="http://localhost*"/>
<content src="index.html" />
<allow-navigation href="*" />

但问题仍然存在。

4. 环境版本控制

  • iOS 13.3
  • 科尔多瓦 7.1.0
  • 离子 v1
  • 角度 1.5

那么如何允许应用程序从我们的服务器中提取数据呢?

根据文档,这个web.xml配置将不起作用:

上述配置启用筛选器,但不会放宽跨源策略。您至少需要添加如下所述的cors.allowed.origins初始化参数以启用跨源请求。

<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>http://localhost, ionic://ionic</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

文档还url-pattern设置为/*而不是*,但我不确定这是否重要。

您可能需要添加更多配置,具体取决于应用发出的请求类型。

相关内容