【问题标题】:UIWebView using Mobile Safari cache data/cookies ... is this possible?UIWebView 使用 Mobile Safari 缓存数据/cookies ...这可能吗?
【发布时间】:2013-04-06 20:41:35
【问题描述】:

我有一个可以访问经过身份验证的内容的应用程序。我知道 webview 无法处理身份验证,所以我做了一些 NSConnection 魔术来使其工作 (something similar to this)

问题是使用此 Web 视图可以访问某些内容,但是在成功验证后,还有一些其他内容事件,Web 视图无法加载。

但是.. 如果我输入与移动 safari 相同的 url,输入所需的凭据,然后返回我的应用程序,WebView 似乎可以正常加载内容。

我尝试在 Safari 中使用此代码完成身份验证之前和之后查看 cookie

[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];

和cookies是一样的。

据我了解,代码将检索我的应用程序生成的 cookie,而不是 iOS 中可用的 cookie,因此显然这不是寻找提示的方法...

有什么想法吗?

【问题讨论】:

    标签: iphone objective-c ios uiwebview mobile-safari


    【解决方案1】:

    最近,我在互联网上潜伏着同样的问题,答案是“不”=(。 UIWebView 类的对象与 Safari 或其他浏览器分开并被沙盒化。 Here 是关于 cookie 的官方立场。

    【讨论】:

    • 您好,感谢您的快速回答!我读到了,然而,有些东西很奇怪,我得到的行为是清晰的并且 100% 可重现。顺便说一句,如果我进入 iPad 设置 > Safari 并点击清除 Cookie 和数据,我的应用程序中的 cookie 也会消失。
    • 可能用户凭据是通过钥匙串 API 存储的。钥匙串在应用程序之间共享,因此存储在 Safari 中的登录/密码可以出现在您的应用程序 UIWebView 中
    • 对于安全的逻辑问题,它是沙盒的。每个应用程序都有自己的 cookie 和历史记录。
    【解决方案2】:

    据我所知,Cookie 不能与来自 Web 视图的第一个请求一起发送,但可以与后续请求一起发送到同一 URL,当且仅当第一个请求成功时。

    这会导致身份验证服务出现问题,需要 cookie 在对 URL 的第一次请求时进行身份验证。

    【讨论】:

      【解决方案3】:

      用户凭据可能通过钥匙串 API 存储。钥匙串在应用程序之间共享,因此存储在 Safari 中的登录名/密码可以出现在您的应用程序 UIWebView 中。您能否详细说明一下,因为我也需要这个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-06
        • 1970-01-01
        • 2015-03-06
        • 2016-12-17
        • 2016-05-19
        • 2011-05-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多