gpt4 book ai didi

iOS - 在 WKWebView 中使用 cookie

转载 作者:行者123 更新时间:2023-11-30 11:05:07 26 4
gpt4 key购买 nike

我尝试在 iOS WKWebView 中使用 cookie,如下所示:

import UIKit
import WebKit

class ViewWrapper: UIViewController, WKNavigationDelegate{

@IBOutlet weak var viewerWebKit: WKWebView!
var loginToken: String?

override func viewDidLoad() {
super.viewDidLoad()

let url = URL(string: "url")!

let newcookie = HTTPCookie(properties: [
.domain: "domain",
.path: "/",
.name: "cookie name",
.value: "cookie value",
.secure: "FALSE",
.expires: NSDate(timeIntervalSinceNow: 31556926)
])

var request = URLRequest(url: url)
request.httpShouldHandleCookies = true
viewerWebKit.configuration.websiteDataStore.httpCookieStore.setCookie(newcookie!, completionHandler: {
print("cookie setup done")
self.viewerWebKit.load(request)
})

let refresh = UIBarButtonItem(barButtonSystemItem: .refresh, target: webView, action: #selector(viewerWebKit.reload))
toolbarItems = [refresh]
navigationController?.isToolbarHidden = false
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

override func loadView() {
viewerWebKit = WKWebView()
viewerWebKit.navigationDelegate = self
view = viewerWebKit
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
title = webView.title
}

}

域名、路径、名称和值 100% 正确。但是当我尝试获取它们并在我的网站上打印时,没有设置 cookie。 cookie 的网站打印效果很好,因为我为此做了一个 Android 应用程序,并且在那里运行得很好。

我需要做更多的事情来接受或存储cookie吗?

最佳答案

这是一个设置 cookie 的独立示例,该 cookie 应该能够从 Web View 中加载的网站中读取。关键点是域名必须与网站的域名相匹配,cookie 过期时间必须设置为 future 的日期,而这只对我有效,将 secure 标志设置为,不知道为什么。

使用下面的示例,我能够在浏览器的检查窗口中看到 cookie。

import UIKit
import WebKit

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

let wv = WKWebView();
view = wv;
let cookie = HTTPCookie(properties: [
.domain: ".example.com",
.path: "",
.name: "name",
.value: "hello world",
.expires: Date(timeIntervalSince1970: 1639655995)
])!
wv.loadHTMLString("", baseURL: URL(string: "http://www.example.com")!);
wv.configuration.websiteDataStore.httpCookieStore.setCookie(cookie)
}
}

关于iOS - 在 WKWebView 中使用 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52815182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com