iOS UIWebView在HTML中丢失了cookie

问题描述 投票:0回答:2

我们的项目是购物中心,所以我们需要将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!

ios cookies uiwebview
2个回答
0
投票

尝试使用HTTPCookieStorage存储cookie。代码示例可能有帮助:

let cookie = HTTPCookie(properties: [
        .name: "user_session",
        .value: YTUserInfo.share.session_key,
        .path: "/",
        .domain: "your-domain.com"])
HTTPCookieStorage.shared.setCookie(cookie!)

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

玩得开心

© www.soinside.com 2019 - 2024. All rights reserved.