UIApplication.shared.open Add Header Data



我需要在 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()
不幸的是,

UIApplication.openURL(:options:completion:) 不支持此功能。此外,您无法打开另一个应用程序的URLRequest,因此确实无法将标题字段传递到外部链接以在 Safari 中打开。

如果您可以控制外部 API,则处理此问题的最佳方法是将 URL 查询参数传递到您打开的 URL 中。但是,您必须小心,因为 URL 查询参数可由用户查看,因此您不能以这种方式传递任何敏感数据。

最新更新