WKWebsiteDataStore 在 getAllCookies 中不显示来自 setCookie 的 cookie

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

在下面的代码中,我希望

print()
使用单个 cookie 记录一个数组,但它记录一个空数组。

let websiteDataStore = WKWebsiteDataStore.nonPersistent()

websiteDataStore.httpCookieStore.setCookie(
    HTTPCookie(properties: [
        .domain: "example.com",
        .path: "/",
        .name: "MyCookieName",
        .value: "MyCookieValue",
        .secure: "TRUE",
        .expires: NSDate(timeIntervalSinceNow: 31_556_926),
    ])!,
    completionHandler: { () in
        websiteDataStore.httpCookieStore.getAllCookies({ (cookies) in
            print(cookies)
        })
    }
)

此外:

  • 当我将这个
    websiteDataStore
    WKWebView
    一起使用时,服务器不会收到我设置的cookie
  • 当我尝试添加
    WKHTTPCookieStoreObserver
    时,
    cookiesDidChange
    函数永远不会被触发

我正在 iOS 17.2 模拟器中进行测试。

为什么不

setCookie()
添加cookie?

ios swift cookies webkit
1个回答
0
投票

结果我启用了

limitsNavigationsToAppBoundDomains
,并且我试图在本地主机上设置 cookie,但我的
<string>localhost</string>
文件中的
<key>WKAppBoundDomains</key>
中没有
Info.plist

像这样添加它修复了问题:

<key>WKAppBoundDomains</key>
<array>
    <string>localhost</string>
</array>

我不清楚

localhost
域是否有例外,因为我本希望受到限制的其他操作(例如添加脚本)工作得很好。

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