Подтвердить что ты не робот

IOS 9... Являются ли WebView (-ами) свободными от правил Exceptions безопасности транспорта (ATS), которые блокируют небезопасные хосты HTTP?

В iOS 9 Apple блокирует небезопасные HTTP-соединения для приложений, если только определенные хосты не включены в белый список.

http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/

Являются ли WebView (-ами) свободными от этих правил по понятным причинам, или мы все еще ожидаем, чтобы белые списки хостов, которые открывается браузером... включая все ссылки с данной страницы?

Я не был уверен, что это была наша ответственность или если это было освобождено.

4b9b3361

Ответ 1

SFSafariViewController может показывать HTTP без ключа NSAppTransportSecurity.

UIWebView и WKWebView требуют, чтобы упомянутый выше ключ NSAppTransportSecurity отображал страницы HTTP.

Ответ 2

В моих приложениях .plist для руководства Apple добавлено следующее:

<key>NSAppTransportSecurity</key>
<dict>
     <!--Include to allow all connections - with and without SSL (DANGEROUS)-->
     <key>NSAllowsArbitraryLoads</key>
     <true/>
</dict>

и когда я пытаюсь загрузить мой webView (с сервера HTTPS не менее), я получаю следующую ошибку и не загружается.

NSURLSession/NSURLConnection Ошибка загрузки HTTP (kCFStreamErrorDomainSSL, -9813)

Итак, похоже, что они не только не освобождаются, они не работают, даже если вы внесли правильное дополнение к .plist.

Ответ 3

Этот вопрос был первоначально о iOS 9; однако, согласно Apple documentation:

Начиная с iOS 10.0 и более поздних версий поддерживаются следующие подразделы:

  • NSAllowsArbitraryLoadsInWebContent
  • ...

Используйте NSAllowsArbitraryLoadsInWebContent, так что вам не нужно белым списком каждой страницы, которую может загрузить WebView.

Сохраните NSAllowsArbitraryLoads, чтобы поддерживать обратную совместимость с iOS 9 и включить новую настройку в проект Xcode 8 Info.plist здесь: Включить ATS в проекте

Ответ 4

Если вашему приложению (например, стороннему веб-браузеру) требуется загрузить произвольный контент, Apple предлагает способ полностью отключить ATS, но я подозреваю, что разумно использовать эту возможность экономно:

<key>NSAppTransportSecurity</key>
    <dict>
        <!--Include to allow all connections (DANGER)-->
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>