iOS UIWebView 在 HTML 中丢失了 cookie
iOS UIWebView lost cookie in the HTML
我们的项目是商场,所以我们需要设置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
但是当我点击 'buy' 按钮时,我的 cookie 丢失了?
看这张照片
https://i.stack.imgur.com/XHkgf.jpg
当我单击此按钮时,php 无法获取我的会话?
那我该怎么办?
Xcode 版本:9.2
手机:iPhone6,iOS11.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
我解决了这个问题"When Web started a AJAX request, web still couldn't get cookie"
func webViewDidFinishLoad(_ webView: UIWebView) {
let cookieStr = "user_session=\(YTUserInfo.share.session_key)"
let source = "document.cookie = '\(cookieStr);path=/';"
webView.stringByEvaluatingJavaScript(from: source)
}
玩得开心
我们的项目是商场,所以我们需要设置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
但是当我点击 'buy' 按钮时,我的 cookie 丢失了?
看这张照片
https://i.stack.imgur.com/XHkgf.jpg
当我单击此按钮时,php 无法获取我的会话?
那我该怎么办?
Xcode 版本:9.2
手机:iPhone6,iOS11.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
我解决了这个问题"When Web started a AJAX request, web still couldn't get cookie"
func webViewDidFinishLoad(_ webView: UIWebView) {
let cookieStr = "user_session=\(YTUserInfo.share.session_key)"
let source = "document.cookie = '\(cookieStr);path=/';"
webView.stringByEvaluatingJavaScript(from: source)
}
玩得开心