APP传输安全块通过自定义URL方案进行路由



我的iOS应用程序(用Swift和React Native编写)具有自定义URL方案,它允许我从例如。像这样的野生动物园myappscheme://https://www.mywebsite.com/somematerial。如果我在应用程序中启用App Transport Security,则通过自定义URL方案进行路由,我会收到此消息:

App Transport Security已阻止了ClearText http(http://)资源 负载由于不安全。临时例外可以通过 您的应用程序的info.plist文件。

但是,如果我禁用ATS,则该应用程序如预期的。我在应用程序中没有通过HTTP访问任何链接,在路由中,我总是通过HTTPS获取数据。因此,我不知道为什么ATS阻止了该路由。您知道我是否必须提供有关我的URL计划的其他信息?

请参阅我在info.plist中的ATS配置:

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

该问题已经解决。我登录了我要击中的终点,并检查了它是否满足ATS的要求:

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

事实证明,我试图获取所有ATS要求的特定子域。我的服务器团队已解决了问题并使端点安全。

我认为问题是在React Native中,您提到您将Safari用作自定义链接的来源,这可能意味着您正在尝试调试应用程序&amp;模拟器中的自定义路由,因此也许您的问题与React Native有关。如果在React Native离线工作时,您在真实设备上具有相同的行为,请更新您的问题。

通过添加 NSAllowsArbitraryLoads进入您的Info.plist文件。因为ATS确实如此 不允许不安全的HTTP请求到IP地址,您必须完全 将其禁用以在设备上运行。这只是对 在设备上开发,除非您无法解决问题 应该让ATS启用生产构建。了解更多信息, 请参阅有关配置ATS的文章。

React本地文档 - 在设备上运行

配置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>

相关内容

  • 没有找到相关文章

最新更新