2017-01-09 2 views
4

У меня есть WKWebView, в котором будут отображаться веб-страницы пользователей, используя ссылки, собранные в Интернете. Иногда эти ссылки: http: которые заблокированы ATS. Я пробовал просто менять ссылки на https:, который иногда работает.WKWebView Как отображать ссылки на http: pages

Однако очень часто я получаю сообщение об ошибке «Ошибка SSL и не удается создать безопасное соединение с сервером».

Иногда страница просто перенаправляется на http:, который снова блокируется. Другие страницы https: просто «Не найдено». Удаление http: только результаты "Unsupported URL" ошибка.

Есть ли способ получить WKWebView, чтобы показать эти страницы?

ПОЖАЛУЙСТА DON "T предложить NSAllowsArbitraryLoads, или даже каждый домен исключение (я не знаю заранее, что домены будут). Страницы загрузить совершенно на сафари, и даже с мобильным сафари, поэтому оно должно быть возможным.

+1

Существует ключ исключения «NSAllowsArbitraryLoadsInWebContent», который позволяет произвольным URL-адресам загружаться в веб-представлениях. – dan

+1

Спасибо, что так много Дэн. Это работает. Вы спасли день :-) – BobCowe

ответ

4

Итак, короткий ответ NSAllowsArbitraryLoadsInWebContent, который будет отлично работать в прошивке 10. Тем не менее, если вы попытаетесь запустить с этим в вашем Info.plist на ИОС 9 устройства, он не будет работать.

Если вы хотите, чтобы это работало как на iOS 9, так и на iOS 10, то Apple рекомендует, чтобы вы сделали какNSAllowsArbitraryLoadsИNSAllowsArbitraryLoadsInWebContent в вашем Info.plist.

В iOS 9, так как он не распознает запись NSAllowsArbitraryLoadsInWebContent, он позволит использовать все содержимое http в приложении (включая WKWebview). Это не идеально, но, пока вы гарантируете, что ваши критические соединения в другом месте безопасны, использование Apple на самом деле мало что делает.

В iOS 10 (который должен выполнять большинство ваших пользователей) iOS игнорирует NSAllowsArbitraryLoads, если он также видит NSAllowsArbitraryLoadsInWebContent. Это означает, что остальная часть сетевых приложений вашего приложения должна будет соответствовать требованиям безопасности ATS, тогда как WKWebView и UIWebView этого не делают. Это не отличное решение, но оно рекомендовано инженерами Apple, когда вам нужно поддерживать как iOS 9, так и 10.

Обратите внимание, что когда Apple начинает требовать обоснования для исключений ATS, запись NSAllowsArbitraryLoadsInWebContent является одной из тех, которые вызовут необходимость оправдания. Но, это лучше, чем иметь NSAllowsArbitraryLoads, и вы можете положить это в свое оправдание, и это должно быть принято Apple.