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.
настроить 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>