ios - 如何检测来自 UIWebView 的身份验证质询?

标签 ios uiwebview http-authentication uiwebviewdelegate

我看过 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/

相关文章:

ios - Cordova CLI 4.0 : how to install master/nightly version of cordova-ios?

ios - FaSTLane快照可以在真实的ios设备上运行吗?

ios - webViewDelegate 和函数

rest - 如何将基本 HTTP 身份验证与 REST Web 服务 (Java+Jersey) 结合使用?

ios - 使用 OpenGL ES 2.0/cocos2d 2.0 绘制圆的最佳方法?

ios - 我需要验证输入的文本,如果格式不正确,则应使用红色下划线,如果正确,则应使用绿色下划线

ios - UIWebView 中的 contentEditable/designMode 时自动滚动

ios - UIWebView 不刷新

android - Android 的 Spring : request authorization headers (not basic)

php - 如何在不需要身份验证时从 URL 检索尝试的 $_SERVER ['REMOTE_USER' ]