【发布时间】:2015-08-27 15:45:48
【问题描述】:
我使用 UIWebView 从我的网络应用创建了一个原生应用。
我的 webapp 是一个基本的 CMS,其中包含一些静态页面、一些类别页面和一些详细信息页面。
现在我需要检查请求是来自网络应用还是原生应用。
要做到这一点,我有两种可能:
第一种解决方案:修改URL并在服务器端检查URL:
@IBOutlet var WebView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
loadWebPage()
}
func loadWebPage() {
let url = NSURL(string: "http://localhost:8888?apptype=native")
let request = NSURLRequest(URL: url!)
WebView.loadRequest(request)
}
当我在服务器端检查参数是否存在于第一页时它可以工作,但是当我切换到其他页面(类别等)时,条件失败。
第二种解决方法:我尝试设置cookies:
@IBOutlet var WebView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
loadWebPage()
}
func loadWebPage() {
let url = NSURL(string: "http://localhost:8888")
let request = NSURLRequest(URL: url!)
var cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies as! [NSHTTPCookie]
var reqCookies:[AnyObject] = []
for aCookie in cookies {
reqCookies += [aCookie]
}
var headers = NSHTTPCookie.requestHeaderFieldsWithCookies(reqCookies)
WebView.loadRequest(request)
}
但是如何在响应中添加此示例中的 cookie,以便我可以在服务器端检索它们?
还有其他解决方案吗?或者如何修改现有的解决方案?
【问题讨论】:
标签: ios swift url cookies uiwebview