我们的项目是购物中心,所以我们需要将session_key设置为UIWebView
这是我设置cookie的代码
```
let url = URL(string: requestUrl)
var requst = URLRequest(url: url!)
requst.addValue("user_session=\(YTUserInfo.share.session_key)", forHTTPHeaderField: "Cookie")
webView.loadRequest(requst)
```
当我进入网页时,php可以获取我的cookie
但当我点击“购买”按钮时,我的cookie丢失了?
看这张照片
https://i.stack.imgur.com/XHkgf.jpg
当我点击这个按钮,PHP无法得到我的会话?
所以我该怎么做?
Xcode版本:9.2
手机:iPhone 6,iOS 11.2
iOS语言:Swift 4.0
服务语言:PHP
现在,我发现问题,当UIWebView加载新的网页时,javaScript无法获取我的cookie!
尝试使用HTTPCookieStorage
存储cookie。代码示例可能有帮助:
let cookie = HTTPCookie(properties: [
.name: "user_session",
.value: YTUserInfo.share.session_key,
.path: "/",
.domain: "your-domain.com"])
HTTPCookieStorage.shared.setCookie(cookie!)
我解决了这个问题
func webView(_ webView: UIWebView, shouldStartLoadWith request:
URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
guard request.allHTTPHeaderFields!["Cookie"] != nil else {
let urlStr = request.url!.absoluteString
let url = URL(string:urlStr)
var request = URLRequest(url:url!)
request.addValue("user_session=\(YTUserInfo.share.session_key)", forHTTPHeaderField: "Cookie")
webView.loadRequest(request)
return true
}
return true
}
但是当Web启动AJAX请求时,Web仍然无法获取cookie
我解决了这个问题“当Web启动一个AJAX请求时,web仍然无法获取cookie”
func webViewDidFinishLoad(_ webView: UIWebView) {
let cookieStr = "user_session=\(YTUserInfo.share.session_key)"
let source = "document.cookie = '\(cookieStr);path=/';"
webView.stringByEvaluatingJavaScript(from: source)
}
玩得开心