App Transport Security блокирует маршрутизацию по пользовательской схеме url

Мои приложения для iOS (написано в Swift и реагировать родной) имеет пользовательскую схему URL, который позволяет мне получить путь к приложению, например, сафари такой myappscheme://на HTTPS://ВСП.сетевом.ком/somematerial. Если я включить приложение транспортной безопасности в мое приложение, маршрутизация через пользовательские схемы URL-адрес заблокирован и я получаю это сообщение:

App Transport Security заблокировал ресурс HTTP (http://) с открытым текстом нагрузка, так как она небезопасна. Можно настроить временные исключения через информация о вашем приложении.plist файл.

однако, если я отключу ATS, маршруты приложения, как ожидалось. Я не получаю доступ к любой ссылке через http в моем приложении, и в моей маршрутизации я всегда получаю данные через https. Поэтому я не знаю, почему ATS блокирует этот маршрут. Вы знаете, должен ли я предоставить дополнительную информацию о моей схеме url?

см. мои конфигурации ATS в Info.файл plist:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoadsInWebContent</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

у меня также есть белый список моей пользовательской схемы url:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>myappscheme</string>
</array>

3 ответов


эта проблема решена. Я вышел из конечной точки, которую я ударил, и проверил, удовлетворяет ли она требованиям ATS, выполнив в терминале:

nscurl --ats-diagnostics https://www.example.com/

оказалось, что конкретный поддомен, который я пытался получить, не выполнил все требования ATS. Моя команда сервера исправила проблему и сделала конечную точку безопасной.


Я думаю, что проблема с React Native, вы упомянули, что используете Safari в качестве источника для пользовательских ссылок, и, вероятно, это означает, что вы пытаетесь отладить свое приложение и пользовательскую маршрутизацию в симуляторе, поэтому, возможно, ваша проблема связана с React Native. Если у вас такое же поведение на реальном устройстве, когда React Native работает в автономном режиме, обновите свой вопрос.

временно отключить App Transport Security (ATS), добавив NSAllowsArbitraryLoads вход . Поскольку ATS делает не разрешать небезопасные HTTP-запросы к IP-адресам, необходимо полностью отключите его для запуска на устройстве. Это только требование для разработка на устройстве, и если вы не можете обойти проблему, вы следует оставить ATS включенным для производственных сборок. За дополнительной информацией, см.этот пост о настройке ATS.

React Native Documentation-Работает На Устройстве


настроить info.plist настройка.

вы можете добавить определенный домен, например:

<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.google.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>