如何使用 SFSafariViewController 从 iOS Safari 应用程序中读取 Cookie

Posted

技术标签:

【中文标题】如何使用 SFSafariViewController 从 iOS Safari 应用程序中读取 Cookie【英文标题】:How to read Cookies from iOS Safari app using SFSafariViewController 【发布时间】:2016-11-17 10:24:27 【问题描述】:

我需要将 Safari 应用程序中的 cookie 读取到我的应用程序内部。那么有没有办法通过在我们的应用程序中使用任何 SFSafariViewController 来做到这一点。请帮帮我。

提前致谢。

已编辑

我有一个 URL https://example.com/abc123,当我在 Safari 应用程序中打开此 URL 时,它会自动设置一些 cookie。现在我必须打开我的应用程序并通过传递域 (https://example.com) 来读取这些 cookie。

NSHTTPCookieStorage *sharedHTTPCookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [sharedHTTPCookieStorage cookiesForURL:[NSURL URLWithString:@"https://wwwexample.com"]];

是否可以读取 cookie?

【问题讨论】:

您能找到解决方案吗? 我们找到了另一种通过 API 读取 cookie 的方法,因为我们可以将 Safari cookie 直接获取到应用程序中。 @Nameet 【参考方案1】:

根据文档,您无法使用 SFSafariViewController 读取 cookie。为此,您需要使用 WKWebViewUIWebView。使用UIWebView获取cookies,可以使用委托方法:

- (void)webViewDidFinishLoad:(UIWebView *)webView 

      NSHTTPCookieStorage *cookiesStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
      NSURLRequest *urlReq = webView.request;
      NSURL *url = urlReq.URL;
      NSArray *cookies = [cookiesStorage [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url]];

【讨论】:

如果我在我的应用中使用 WKWebView,是否可以从 Safari 应用中读取 Cookie? 是的。您也可以使用UIWebView 获取cookie。我已经编辑了我的答案以包含一些仅供参考的代码 @GaneshGuturi,您是否尝试过访问 NSHTTPCookie 数组中的 NSHTTPCookie 对象?请告诉我 是的,我试过了。我越来越零了。数组计数也是“0”。

以上是关于如何使用 SFSafariViewController 从 iOS Safari 应用程序中读取 Cookie的主要内容,如果未能解决你的问题,请参考以下文章

如果加入条件,我该如何解决。如果使用字符串连接,我如何使用

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?