我做了一個快速測試,看來,所需的任何引用的資源由UIWebView
加載到正確顯示的頁面必須由ATS遵守規則,但也跟着你在Info.plist
指定任何異常的項目。如果我試圖在UIWebView
中關注非https網站的鏈接,它也會給我帶來錯誤。
我認爲你最好的選擇是對iOS 9用戶有條件地使用SFSafariViewController
。對於不嚴格執行ATS的iOS 7和iOS 8設備,您可以繼續使用UIWebView
。這增加了一些額外的代碼,但它應該是最小的。
此外,只是對蘋果的執行應用程序傳輸安全性的變化的澄清。他們宣佈在2016年12月31日之後提交的應用需要App Transport Security。這意味着影響不是基於用戶的設備操作系統,而是基於提交的開發人員。此外,只要您有理由,Apple 仍允許添加例外。我們還不知道蘋果會允許什麼類型的理由。最後,蘋果在他們的WWDC會議上表示,應用程序仍然可以包含對ATS要求的前向保密部分的例外,而無需另行說明理由。但是,直到我們到2017年1月1日,我們不能確定這將如何工作。
編輯:看來蘋果已經增加了一個新的異常,你可以用它來允許UIWebview
和WKWebview
實例非ATS連接。它是NSAllowsArbitraryLoadsInWebContent
。這應該做你正在尋找的東西。以下是ATS的最新摘要:preparing for ATS in 2017.
如果您的應用程序訪問任何非https內容,那麼您需要特定的異常(如果您知道服務器將是什麼)或一般異常(即禁用ATS)如果內容可能來自任何地方。如果你使用SFSafariViewController,那麼你不需要禁用ATS。如果你使用UIWebView或WKWebView,那麼你做http://stackoverflow.com/questions/31065204/ios-9-are-webviews-exempt-from-the-app-transport-security-exceptions-ats – Paulw11
謝謝@ Paulw11爲你回覆。 SFSafariViewController可從iOS9獲得,但我們有一些仍在iOS7設備上的客戶。從iOS10開始,Apple不會允許例外(即禁用ATS),並且所有請求都必須得到保護。所以考慮到我的問題,我是否需要提供CSS,JS和HTML內容中的鏈接需要保護? – miOS
首先,它不是從ios 10開始,而是從今年年底之後提交的應用程序開始。它將在提交時執行。另外,Apple不會允許例外。他們會允許您提交例外情況,但似乎他們會在您提交時詢問理由,如果您的理由不夠好,他們可能會也可能不會拒絕您的應用。 – wottle