iOS: конфликт WKWebView NSAllowsArbitraryLoadsInWebContent и NSAllowsArbitraryLoads - PullRequest
0 голосов
/ 04 октября 2018

У меня есть мобильное приложение, которое используется несколькими людьми, которые запускают его на своих собственных серверах.Поэтому нет централизованного сервера.Многие из этих пользователей используют самозаверяющие сертификаты (потому что они не выставляют свои серверы в глобальной сети и / или используют VPN)

При попытке перенести мое приложение из UI WebView для iOS в WKWebview яВозникли проблемы.

  1. Сначала я использую cordova-plugin-advanced-http для доступа по HTTP.К сожалению, его setSSLCertMode("nocheck", {}) не работает с самозаверяющими сертификатами в iOS.Работает довольно хорошо в Android.Я создал проблему также для этого.

  2. Чтобы заставить вещи работать, я добавил (я пытался вставить это в кодовые блоки, но это продолжало сокращатьсякод отсюда, иди разберись ...)

<config-file parent="NSAppTransportSecurity" target="*-Info.plist">
  <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true />
  </dict>
</config-file>

Это решило проблему с подключением.Однако мне также нужно отображать изображения, используя <img src= /> с этого самозаверяющего сервера сертификации.Это потребовало от меня добавить:

<config-file parent="NSAppTransportSecurity" target="*-Info.plist">
  <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true />
    <key>NSAllowsArbitraryLoadsInWebContent</key>
    <true />
  </dict>
</config-file>

Однако кажется, что добавление NSAllowsArbitraryLoadsInWebContent вызывает проблемы с NSAllowsArbitraryLoads, и мое соединение снова разрывается.

Кто-нибудь испытывал это?Есть ли обходной путь?

Я понимаю, что добавление этих ключей вызовет проверку Apple - я вполне уверен, что у меня есть законный ответ: я не контролирую сервер - каждый отдельный пользователь, который использует мое приложение, имеетих собственные.

Спасибо

Отредактировано: я только что прочитал в другом месте, что если IOS 10+ обнаружит оба ключа, он будет игнорировать NSAllowsArbitraryLoads, поскольку NSAllowsArbitraryLoadsInWebContent является более строгим.В нем также говорится, что при выполнении NSAllowsArbitraryLoads должны отображаться как изображения WKWebView, так и обычные HTTP-соединения.Кажется, это не так для меня.Это ошибка, которую я вижу только при использовании NSAllowsArbitraryLoads на самозаверяющих сертификатах

enter image description here

...