我需要在Safari中打开一个外部链接到一个页面,但我正在使用该URL的服务器要求我需要验证标头中的IP地址。如何使用UIApplication.shared.open传递标题数据?
有一个选项参数,但如果这是用于传递标题数据的正确参数,我找不到任何示例或文档,如['header':_ipAddress]。
下面是我为应用程序本身打开的另一种请求设置标题的示例,但我不知道如何为UIApplication.shared.open执行此操作。
let newRequest = (self.request as NSURLRequest).mutableCopy() as! NSMutableURLRequest
if let _ip = EDataManager.shared.ipAddressOfTheUser, _ip.length() > 0 {
newRequest.setValue(_ip, forHTTPHeaderField: "ex_header")
}
URLProtocol.setProperty("true", forKey: EWebViewAssetDownloadProtocol.CustomKey, in: newRequest)
let defaultConfigObj = URLSessionConfiguration.default
let defaultSession = URLSession(configuration: defaultConfigObj, delegate: self, delegateQueue: nil)
self.dataTask = defaultSession.dataTask(with: newRequest as URLRequest)
self.dataTask!.resume()
答案 0 :(得分:0)
很遗憾,UIApplication.openURL(:options:completion:)
不支持此功能。此外,您无法向其他应用程序打开URLRequest
,因此实际上无法将标头字段传递到外部链接以在Safari中打开。
如果您可以控制外部API,则处理此问题的最佳方法是将URL查询参数传递到您打开的url中。但是,您必须注意这一点,因为URL查询参数是用户可见的,因此您不能以这种方式传递任何敏感数据。