[英]App Transport Security blocks routing via custom url scheme
我的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>
我還將我的自定義網址列入白名單:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>myappscheme</string>
</array>
此問題已得到解決。 我注銷了我正在擊中的端點,並檢查它是否滿足ATS要求,方法是在終端:
nscurl --ats-diagnostics https://www.example.com/
事實證明,我試圖獲取的特定子域未能滿足所有ATS要求。 我的服務器團隊修復了問題並使端點安全。
我認為問題在於React Native,你提到你使用Safari作為自定義鏈接的來源,這可能意味着你試圖在模擬器中調試你的應用程序和自定義路由,所以也許你的問題與React Native有關。 如果React Native脫機工作時在真實設備上具有相同的行為,請更新您的問題。
通過將
NSAllowsArbitraryLoads
條目添加到Info.plist
文件暫時禁用App Transport Security(ATS)。 由於ATS不允許對IP地址進行不安全的HTTP請求,因此必須完全禁用它才能在設備上運行。 這只是在設備上進行開發的要求,除非您無法解決問題,否則應該為生產版本啟用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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.