Ioni c 1 WkWebView iOS - Не удалось загрузить ресурс: Origin ioni c: // localhost не разрешен Access-Control-Allow - PullRequest
0 голосов
/ 16 января 2020

1. Короткое вступление

недавно мы обновили наше приложение просто для того, чтобы соответствовать новым правилам Apple относительно процесса подписания Apple, но этого было недостаточно.

Apple блокирует нашу базу релизов из-за того, что в настоящее время мы не принимаем новый веб-вид WkWebView.

Поэтому мы решили использовать следующий плагин: (https://github.com/ionic-team/cordova-plugin-ionic-webview)

Было слишком замечательно видеть что проблемы с XHR file: // запрос был исправлен новыми версиями, НО важный блок CORS все еще присутствует.

2. Проблема

Как видно из заголовка, каждый вызов, который мы выполняем на нашем сервере, по-прежнему продолжает получать ошибку «Не удалось загрузить ресурс: Origin ioni c: // localhost не разрешен Access- Control-Allow ... "

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
  • cordova 7.1.0
  • ioni c v1
  • angular 1.5

Так как разрешить приложению получать данные с нашего сервера ??

Большое спасибо заранее

Симон

1 Ответ

1 голос
/ 16 января 2020

Согласно документам , эта конфигурация 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 установлено на /* и не *, но я не уверен, что это важно.

Возможно, вам придется добавить дополнительные настройки в зависимости от того, какие типы запросов выполняет ваше приложение.

...