我看过 many questions当您事先知道请求需要凭据时,询问(并回答)如何提供凭据。
当我加载请求身份验证质询的网站时(以 HTTP 401 响应),我的 UIWebViewDelegate
仅收到以下回调:webView:shouldStartLoadWithRequest:navigationType:
和有时 webViewDidStartLoad:
(webViewDidStartLoad:
如果我直接导航到该站点,似乎会被调用,如果我被重定向到该站点,它似乎不会被调用)。
通过覆盖 -[NSObject respondsToSelector:]
,UIWebViewDelegate
接收到一些对 uiWebView:resource:canAuthenticateAgainstProtectionSpace:forDataSource:
和 的调用>uiWebView:resource:didReceiveAuthenticationChallenge:fromDataSource:
,这可能很有用,但当然这些是私有(private) API,可能会导致我的应用被拒绝。
我测试了一些带有嵌入式 UIWebView
的不同主流应用。到目前为止,只有 Chrome 能够正确处理这些身份验证挑战。我什至设置了自己的服务器并验证了 Chrome 仅 POST
一次。 Twitter 和 Tweetbot 失败只是永远显示加载屏幕,就像我的一样。
除了使用第二个推测性 NSURLConnection
之外,还有其他(可能非常 hacky)方法来检测这些身份验证挑战吗?如果我发出一个 POST
请求,那将双重 POST
所有内容,这很糟糕。
I've added a radar to request an enhancement to UIWebView for this .请复制它。
最佳答案
Apple now has sample code that solves this problem .它也看起来像是关于如何正确实现 NSURLProtocol 的最完整的文档。
关于ios - 如何检测来自 UIWebView 的身份验证质询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16239484/