2010-11-16 48 views
2

我正在研究需要僅使用我信任的服務器(基於SSL握手)而不是所有Apple認可的服務器的Web視圖。帶有服務器信任身份驗證挑戰的UIWebView

有沒有辦法攔截UIWebView連接,所以我可以控制請求身份驗證?

當我使用UIWebView方法loadRequest:沒有辦法獲取SSL挑戰(因爲它不是UIWebViewDelegate協議的一部分)。

另一種方法是獲取UIWebView即將發送的請求(使用委託回調webView:shouldStartLoadWithRequest:navigationType :),告訴UIWebView不要加載它,並使用NSURLConnection發送請求(使用委託方法對於SSL握手邏輯)。並在連接完成時,將接收到的數據加載到UIWebView中(使用加載方法loadData:MIMEType:textEncodingName:baseURL :)。此解決方法適用於簡單的網站,但複雜的網站(JS,CSS ...)可能無法正常工作。

謝謝!

回答

0

我有一個類似的問題,試圖顯示證書已過期的網頁。我發現this post,它向我展示瞭如何使用NSURLRequest上的協議來覆蓋方法allowsAnyHTTPSCertificateForHost

他強調,這可能會或可能不會被蘋果公司接受 - 但是對於我的發展,這節省了我一些時間。

您可以使用這種技術來解決您的問題。

+0

我還發現堆棧溢出一個相關的問題 - http://stackoverflow.com/questions/1769888/how-to-display-the-authentication-challenge-in-uiwebview - 的解決方案之一提供了一個「專業「但是這個和許多相關問題的免費解決方案。我還沒有測試過他的代碼。 – 2011-01-26 12:38:20

相關問題