【发布时间】:2010-07-28 01:23:26
【问题描述】:
我制作了一个使用 UIWebView 来显示使用基本身份验证的网站的应用程序。它从 iOS3.2 开始停止显示内容(在 iPhone 和 iPad 上)。
我对用户进行身份验证的方法是:
- 创建一个 NSURLConnection
- 实现 didReceiveAuthenticationChallenge 以提供凭据
- 实现 didReceiveResponse 接收响应并在 UIWebView 中加载请求,即 [webView loadRequest:]
从iOS3.2开始,认证就失效了; UIWebView 似乎不再检查共享凭证存储。
对于 iPhone 上的 iOS4,我设法通过愚蠢地解决此问题,将 URL 中的登录信息(即https://username:password@www.somesite.com)包含在传递给 webView 的初始加载请求中。
对于 iPad 上的 iOS3.2,这还不够。最初的请求已经通过了认证,但是后续的调用仍然没有通过认证。
有什么建议吗?
【问题讨论】:
-
我发现它确实保持身份验证,不是针对主机名,而是针对主机和路径。因此,如果 somesite.com/dir1 已通过身份验证:somesite.com/dir1/page1.htm 将通过身份验证;和somesite.com/dir2/page1.htm 不会被认证。
标签: iphone authentication ipad uiwebview