Ошибка загрузки HTTP (kCFStreamErrorDomainSSL, -9806 (IOS9)

Я получаю сообщение о сбое HTTP-загрузки NSURLSession/NSURLConnection на iOS 9 при запуске приложения в симуляторе. Вот как выглядит мой файл info.plist

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSIncludesSubdomains</key>
        <true/>
        <!--Include to allow insecure HTTP requests-->
        <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
        <true/>
        <!--Include to specify minimum TLS version-->
        <key>NSTemporaryExceptionMinimumTLSVersion</key>
        <string>TLSv1.1</string>
    </dict>

Даже после ввода этих значений ключей такая же ошибка появляется на консоли Xcode. Пожалуйста помогите.

Это скриншот info.plist

введите здесь описание изображения

Большое спасибо!


person heavyguidence    schedule 06.07.2015    source источник


Ответы (1)


Вам нужно определить URL-адрес, для которого вы хотите применить эти правила. Правильную декларацию можно найти на странице документации Apple: https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/

Таким образом, ваш Info.plist должен выглядеть так и включать домен.

Примечание: для большей прозрачности я также повторно объявил значение по умолчанию для NSAllowsArbitraryLoads равным false.

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>yourdomain.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

С наилучшими пожеланиями.

В случае, если вас просто не волнуют все эти проблемы с ssl (я не рекомендую это) и вы хотите только отладить свой пользовательский интерфейс, вы также можете временно пойти и использовать не по умолчанию для App TransportSecurity и разрешить что угодно :

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

Я не уверен, пропустит ли Apple это в AppStore Review ;-)

person Lepidopteron    schedule 27.07.2015
comment
Да, проходит. Есть много приложений, которые просто не знают во время сборки, на какие именно домены будут указывать ссылки. Есть веская причина включить это в программе чтения RSS и т. Д. - person igraczech; 11.12.2015
comment
я отключил ATS для всех, но все равно запрос не выполняется - person Mrug; 28.07.2020