2015-06-26 5 views
20

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

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

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

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

+0

Это может объяснить, что это за ATS - https://medium.com/@ Mrugraj/app-transport-security-b7910c4fc70f – Mrug

ответ

26

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

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

+1

У вас есть источник для этого или фактического подтверждения? Потому что это не то, что сказал @Scooter, это его опыт работы с ** SFSafariViewController **. –

+0

Я пробовал этот проект (который не имеет ключа NSAppTransportSecurity) https://github.com/MShahmeer/SFSafariViewController-Test .. затем изменил его, чтобы загрузить UIWebView и WKWebView. UI и WK не работали с HTTP, но SafariViewController сделал. Использование Xcode 7.0 beta 3 (7A152u). Использование симулятора (у меня нет устройства iOS 9) – cannyboy

+0

У меня был подобный опыт, нахождение ответа на мой вопрос здесь: http://stackoverflow.com/questions/32993320/raise-exception-on-app-transport-security/32994542 # 32994542. Даже если вы добавите домен как исключение, которое загружается в ваш UIWebView (я не могу говорить для других 2, так как я не пробовал), если этот домен запрашивает другие небезопасные источники, он также блокирует эти запросы в UIWebView , –

11

Я вставил следующие в моих программах .plist на яблоке Руководство:

<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.

+1

У вас была возможность попробовать новый «SFSafariViewController»? Мне интересно, освобождено ли это. –

+0

Я не слышал об этом. Я дам эту попытку сегодня вечером и посмотрю, что я получу. – Scooter

+0

Дайте мне знать! Спасибо –

0

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

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

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

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

  • NSAllowsArbitraryLoadsInWebContent
  • ...

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

Держите NSAllowsArbitraryLoads поддерживать обратную совместимость с прошивкой 9 и включить новые настройки в вашем Xcode 8 проекта Info.plist здесь: Enable ATS in project

 Смежные вопросы

  • Нет связанных вопросов^_^