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)
    }

玩得开心