【问题标题】:Set cookies from the app to Safari in iOS在 iOS 中将 cookie 从应用程序设置到 Safari
【发布时间】:2015-11-13 08:41:44
【问题描述】:

在我的应用程序中,我需要实现下一个功能:当用户登录应用程序时,它(应用程序)需要将某些网站的 cookie(或任何其他数据)保存到移动 Safari。目标是在用户下次在 Safari 中打开该网站时不让用户登录。

Documentation 表示无法在 iOS 上使用 cookie 完成。有人知道其他解决方案吗?实现所需的功能是使其对用户“静默”,而无需打开 Safari。

更新

是否可以从移动 Safari 访问应用程序数据并获得一些回调?例如,当用户浏览网站时,网站会向应用程序发送一些回调,并通过用户数据获得一些响应。

【问题讨论】:

  • 它不能在 IOS/mobilesafari 或任何其他操作系统和/或浏览器中完成,这是有充分理由的:如果任何应用程序可以任意混淆浏览器 cookie,这将是一个巨大的安全漏洞洞。这应该在在浏览器中在相关网站上完成

标签: ios objective-c cookies safari


【解决方案1】:

您无法访问 Safari cookie。

其他应用程序无法访问 Safari 的 cookie。每个应用程序都给出 它自己的 WebKit 缓存和 cookie 存储,所以虽然 cookie 会持续存在 在同一个应用中,它们不能在应用之间访问。

【讨论】:

    【解决方案2】:

    老问题,但您能否将 Safari 从您的应用程序打开到一个特殊的一次性 URL,该 URL 将用户带到您托管的页面,传递您从同一服务器上的 API 检索的令牌,然后页面验证令牌和设置曲奇饼?这样授权在服务器上处理,服务器可以在响应中设置 cookie。

    你可以在你的应用中做这样的事情

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://myhost.com/myhandler?token=PX2G16BWFKZBQWUKGF3BGRY2Z6BEJ7Z3PMO2GZ6S3R00JVWBVEO6VWBEXNK14IBJ5GKAY5EKBLAHNSAJ8"]];
    

    然后 myhost.com/myhandler 上的页面将读取并验证令牌,并在响应中设置 cookie,然后使令牌无效。您还可以添加令牌可以使用多长时间的时间限制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多