我们的项目是购物中心,所以我们需要将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
mobile:iPhone 6,iOS 11.2
iOS语言:Swift 4.0
服务语言:PHP
现在,我发现了这个问题, 当UIWebView加载新的网页时,javaScript无法获取我的cookie!
答案 0 :(得分:0)
尝试使用HTTPCookieStorage
存储Cookie。代码示例可能有帮助:
let cookie = HTTPCookie(properties: [
.name: "user_session",
.value: YTUserInfo.share.session_key,
.path: "/",
.domain: "your-domain.com"])
HTTPCookieStorage.shared.setCookie(cookie!)
答案 1 :(得分:0)
我解决了这个问题
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)
}
玩得开心