UIWebView未检测到网页cookie

mal*_*yeb 6 cookies sharepoint uiwebview ios

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

该网页设置了四个cookie:

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

从Firefox中Storage Inspector我看到我所有的cookie都是预期的,见截图:

在此输入图像描述

但是,我从iOS NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies内部打印,webViewDidFinishLoad只有四个预期的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)")
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

为什么我的iOS应用程序没有检测到我的自定义Cookie并且仅检测到我的Google Analytics(分析)?

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

func applicationDidBecomeActive(application: UIApplication) {
    NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always
}        
Run Code Online (Sandbox Code Playgroud)

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

JAL*_*JAL 0

一些想法:

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

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

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