ios - UIWebView 未检测到网页 cookie

标签 ios cookies sharepoint uiwebview

我正在开发使用 UIWebView 加载网页的 iOS 应用程序

网页设置了四个cookie:

  1. 两个用于 Google Analytics,_ga 和 _gat
  2. 一个用于我的 Web 应用程序的唯一访问者计数器
  3. 一个用于我的网页以检测用户是否投票。
    1. 如果此 cookie 可用,则显示投票结果。

在 Firefox 的 Storage Inspector 中,我按预期看到了所有 cookie,请参见屏幕截图:

enter image description here

但是,在 iOS 中,我从 webViewDidFinishLoad 中打印了 NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies 并且四个预期的 cookie 中只有两个,iOS 用户也可以投票因为未检测到 cookie(或未存储在 iOS 设备中),他们想要的次数:

if let cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies {
    for c in cookies {
        print("*******************")
        print("name: \(c.name)")
        print("domain: \(c.domain)")
        print("value: \(c.value)")
        print("path: \(c.path)")
        print("expiresDate: \(c.expiresDate)")
    }
}

enter image description here

为什么我的 iOS 应用程序检测不到我的自定义 cookie 而只检测到我的 Google Analytics cookie?

注意 1:我还将此代码添加到我的应用程序中:

func applicationDidBecomeActive(application: UIApplication) {
    NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always
}        

注意 2:我的后端是 SharePoint 网络应用程序

最佳答案

一些想法:

设备的 Safari“阻止 Cookie”设置会覆盖对 cookieAcceptPolicy 的任何更改。设备上此设置的默认策略是“允许我访问的网站”,这取决于您的 iOS 设备的版本,允许第三方 cookie。使用 iOS 9.3.x 进行的测试表明,第三方 cookie 会以默认设置保留在 UIWebView 中,但不会保留“仅允许来自当前网站”或“始终阻止”设置。

检查设备是否使用不同的 Safari cookie 设置保留您的 cookie。

此外,您的 cookie 是否设置了过期日期?我发现未设置过期日期的 cookie 在 UIWebView 中被视为 session cookie,它仅在接收它的 Web View 的生命周期内持续存在。

关于ios - UIWebView 未检测到网页 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36567654/

相关文章:

iphone - 将对象设置为 nil 是否将其标记为垃圾回收

ios - 将点击手势从 UIView 传递到底层 AVPlayer

javascript - 时事通讯弹出窗口中的 Cookie 重置时间

cookies - 应用同步 : How set header in response?

Jquery 不适用于 sharePoint 和 Internet Explorer

c# - 基于列表定义模板创建列表

ios - 设备内存不足时是否可以防止应用程序终止?

ios:使 ScrollView 出现在 Nib 上的项目下方

express - axios支持Set-Cookie吗?是否可以通过axios HTTP请求进行身份验证?

sharepoint - 共享点:检查用户是否是组的成员