iOS UIWebView在HTML

时间:2017-12-28 02:35:56

标签: ios cookies uiwebview

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

2 个答案:

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

玩得开心