ios - 如何在 iOS 中使用预设的 cookie 或 header 在 Safari 中打开 URL?

标签 ios objective-c swift

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

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

UIApplication.sharedApplication().openURL(NSURL(string: url)!)

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

我的问题是,如何将 cookie 或 header 传递给 Safari 并使用它们启动 URL?

最佳答案

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

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

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

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

关于ios - 如何在 iOS 中使用预设的 cookie 或 header 在 Safari 中打开 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38071378/

相关文章:

ios - UITableView 缩略图性能

objective-c - 实现返回两个数字的方法

swift - 无法构建游戏场景,因为它没有可访问的初始化程序

ios - NSLocale.current.language 返回错误值

iphone - 如何使用 iPhone 中的消息访问配置文件在蓝牙设备(如智能 watch )上使用 SMS 和 iMessage 通知?

ios - 带有objc_setAssociatedObject和objc_registerClassPair的Swift奇怪的EXC_BAD_ACCESS崩溃

从像素密度 (ppi) > 300ppi 的相机捕获的 iOS 图像

ios - 如何在 iOS Swift 中可靠地获取键盘高度?

ios - 使用 Swift 在 iOS 应用程序中上传图像作为个人资料照片

iphone - iOS 表格 View 和 View Controller