如何在iOS中使用预设的cookie或标题在Safari中打开URL?

The*_*ook 12 objective-c ios swift

在我的应用程序中,我有一个屏幕,用户可以单击不同类型的文件来查看和下载它们.但是,只有在用户通过网站登录后才能访问此屏幕.

我使用此方法使用我的URL启动Safari浏览器:

UIApplication.sharedApplication().openURL(NSURL(string: url)!)
Run Code Online (Sandbox Code Playgroud)

但是,用户被重定向到登录屏幕,因为他还没有被授权使用该网站.

我的问题是,如何将cookie或标题传递给Safari并使用这些URL启动URL?

Kor*_*nel 2

你不能直接这样做。openURL仅此而已,仅此而已。

您需要在 URL 中传递所需的凭据。目标服务器可以从 URL 读取它们,然后在响应中设置所需的 cookie。

如果您实现了这一点,请确保它不会被滥用来设置任意 cookie 或执行会话固定攻击。安全实现这一点的一种方法是使用一次性标识符:

  1. 在 iOS 应用程序中,使用有效的身份验证 cookie 联系服务器,并请求服务器需要存储一段时间的一次性长随机密钥。
  2. 将用户重定向到 URL?key=<that one-time key>
  3. 让服务器验证密钥是否匹配并为用户设置cookie,并删除密钥。