App Transport Security通过自定义URL方案阻止路由

ing*_*nga 6 url-scheme ios swift react-native

我的iOS应用程序(用Swift和React Native编写)有一个自定义url方案,允许我从例如Safari这样的appappscheme:// https://www.mywebsite.com/somematerial路由到应用程序.如果我在我的应用中启用App Transport Security,则会阻止通过自定义网址方案进行路由,并收到以下消息:

App Transport Security已阻止明文HTTP(http://)资源加载,因为它不安全.可以通过应用程序的Info.plist文件配置临时例外.

但是,如果我禁用ATS,应用程序将按预期路由.我没有通过我的应用程序中的http访问任何链接,在我的路由中,我总是通过https获取数据.因此,我不知道为什么ATS会阻止此路由.你知道我是否必须提供一些关于我的网址方案的其他信息吗?

请参阅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>
Run Code Online (Sandbox Code Playgroud)

我还将我的自定义网址列入白名单:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>myappscheme</string>
</array>
Run Code Online (Sandbox Code Playgroud)

ing*_*nga 1

此问题已得到解决。我注销了正在访问的端点,并通过在终端中执行以下操作来检查它是否满足 ATS 要求:

nscurl --ats-diagnostics https://www.example.com/
Run Code Online (Sandbox Code Playgroud)

事实证明,我尝试获取的特定子域未满足所有 ATS 要求。我的服务器团队已修复该问题并确保端点安全。