2017-01-27 45 views
0

裏面我不得不創建一個使用NSURLSessionDataTask(HTTP)發送請求到服務器框架,但每當我用示例應用程序框架,它表明這樣的警告:iOS9:應用程序傳輸安全的.plist框架

由於應用傳輸安全性不安全,因此應用傳輸安全已阻止明文HTTP(http://)資源加載。臨時例外可以通過您的應用程序的Info.plist文件進行配置。

我試圖在Framework .plist中添加App Transport Security,但仍然無法工作。但是,它在Framework外的.plist中添加App Transport Security時起作用。

是否有針對此問題的任何解決方案?,謝謝

+0

將異常授予您的應用程序,而不是特定的框架。只需將它添加到您應用的Info.plist中。 – EmilioPelaez

回答

-1

enter image description here添加NSAllowsArbitraryLoads作爲真正的關鍵在你的info.plist以避免此問題。

+0

請不要在不解釋Apple會要求應用程序提供禁用ATS的理由的情況下推薦此解決方案。 – wottle

0

正如@EmilioPelaez所述,應用程序控制ATS是否激活。如果你的框架做了違反ATS規則的事情,那麼每個使用該框架的應用程序都需要添加適當的異常。

這種行爲有很好的理由。例如,採用通用網絡助手框架,其中URL由調用應用程序提供給框架調用。該框架無法知道它是否需要ATS。相反,如果框架中有硬編碼的URL需要ATS異常,那麼調用應用程序的開發人員應該意識到這一點,並且不應該被框架開發人員添加異常的情況所掩蓋。作爲一名開發人員,我想知道我使用的是一種本質上不安全的框架。如果您正在處理後一種情況,只需在框架文檔中輸入框架正常運行所需的異常。

此外,與ATS最佳實踐,不只是禁用它完全,有可用於最小化只能在禁止針對特定領域的ATS要求某些地區安全風險的具體例外。確保你這樣做。此外,瞭解蘋果計劃在2016年年底之前要求許多ATS例外的理由,但目前它已被推遲。如果您添加了例外情況,則應該準備好在某些時候,將應用程序提交到App Store時,蘋果會詢問您是否有理由。它可能不應該是「因爲堆棧溢出告訴我禁用所有ATS」。

0

該框架沒有控制ATS,應用程序。所以你必須在你的文檔中寫下來,應用程序開發者需要爲他的應用程序添加ATS例外。

也就是說,不要這樣做。特別是如果你正在製作一個框架。花點時間並向服務器添加HTTPS支持/聯繫服務器開發人員以添加它。因爲Apple很快就會停止支持AllowArbitraryLoads/exceptions。因此,包含您的框架的應用程序將無法通過審覈流程,而無法提供他們爲什麼需要這些例外的有效理由。蘋果原本計劃從2017年1月1日起放棄支持,但他們推遲了未知的時間。不過,他們有一天會這樣做。爲未來做計劃會更好。

P.S.如果你完全不能控制服務器,並且服務器開發人員在火星上,並且你的框架確實需要與該服務器通信,那麼應用程序開發人員可能會通過解釋情況來通過審查(「不控制服務器「是Apple Review小組的有效理由),但他們中的每一個人都必須一遍又一遍地完成,而且你必須在文檔中解釋如何做和說什麼。所以切換到HTTPS更容易。