我正在开发使用UIWebView
网页设置了四个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)")
}
}
为什么我的iOS应用检测不到我的自定义Cookie并且仅检测到我的Google Analytics?
注意1:我还将此代码添加到我的应用程序中:
func applicationDidBecomeActive(application: UIApplication) {
NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always
}
注意2:我的后端是SharePoint Web应用程序
答案 0 :(得分:0)
一些想法:
设备的Safari"阻止Cookie"设置会覆盖对cookieAcceptPolicy
的任何更改。设备上此设置的默认策略是"允许来自我访问的网站,"这取决于您的iOS设备的版本,允许第三方cookie。使用iOS 9.3.x进行测试表明,第三方cookie在UIWebView
中保留了默认设置,但不会保留设置"仅允许来自当前网站"或"始终阻止。"
检查设备是否使用不同的Safari Cookie设置保留您的Cookie。
此外,您的Cookie是否设置了到期日期?我发现没有设置过期日期的Cookie被视为UIWebView
中的会话Cookie,只会在收到它的网页视图的生命周期中持续存在。