【发布时间】:2019-03-19 18:57:16
【问题描述】:
我正在尝试像这样在 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 吗?
【问题讨论】:
-
您在应用程序中的 WKWebView 中为域设置 cookie 并希望 cookie 在 safari 中可用?这就是你面临的麻烦吗?
-
没有。我在 WKWebView 中设置它们,我也试图在加载的网站的同一个 WKWebView 中打印它们。
-
您能否添加代码以显示您如何从 cookie 存储中读取它们?
-
网站正在执行读取和打印,而不是应用程序。正如我所提到的,它适用于 android。如何在 iOS 应用中测试和打印(记录)设置的 cookie?
标签: ios swift cookies wkwebview