在我的应用程序中,我有一个屏幕,用户可以在其中单击不同类型的文件来查看和下载它们。但是,只有在用户通过网站登录后才能访问此屏幕。
我使用此方法通过我的 URL 启动 Safari 浏览器:
UIApplication.sharedApplication().openURL(NSURL(string: url)!)
但是,用户被重定向到登录屏幕,因为他还没有被授权使用该网站。
我的问题是,如何将 cookie 或 header 传递给 Safari 并使用它们启动 URL?
最佳答案
您不能直接这样做。 openURL
仅此而已。
您需要在 URL 中传递所需的凭据。目标服务器可能会从 URL 中读取它们,然后在响应中设置所需的 cookie。
如果您实现它,请确保它不会被滥用来设置任意 cookie 或执行 session 固定攻击。一种安全实现的方法是使用一次性标识符:
- 在 iOS 应用程序中,使用有效的身份验证 cookie 联系服务器并请求一个一次性的随 secret 钥,服务器需要将其存储一段时间。
- 将用户重定向到带有
?key=<that one-time key>
的 URL - 让服务器验证 key 匹配并为用户设置cookie,并删除 key 。
关于ios - 如何在 iOS 中使用预设的 cookie 或 header 在 Safari 中打开 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38071378/