我想检查请求中是否存在 cookie.name=='Custom' 。
现在我从字典中读取字符串
request.allHTTPHeaderFields
,然后进行分割,然后进行for循环。我认为有一种非常优雅的方式。
if let allHTTPHeaderFields = request.allHTTPHeaderFields,
let cookies = allHTTPHeaderFields["Cookie"] {
let cookieArray = cookies.split(separator: ";")
for cookie in cookieArray {
if cookie.contains("Custom") {
//do something
}
}
}
我尝试了
HTTPCookie.cookies(withResponseHeaderFields: allHTTPHeaderFields, for: url)
,但它总是返回0 elements
方法
HTTPCookie.cookies(withResponseHeaderFields: allHTTPHeaderFields, for: url)
对我有用。
不过我的情况有点不同。我只得到饼干(作为字符串),我需要一种简单地转换为 HTTPCookie
的方法。我所做的就是取出饼干,然后将它们连接起来,得到像"cookie1=1; HttpOnly, cookie2=2; sameSitePolicy=Strict"
这样的东西。然后我制作了一个假字典["Set-Cookie" : "cookie1=1, cookie2=2"]
,其中的cookies设置就像它们来自HttpResponseHeader一样。然后我将它们添加到 HTTPCookie.cookies(_ withResponseHeaderFields:)
以及网站的 url,并以 HTTPCookie
的形式取回所有 cookie。