如何将 cookie 字符串从 allHTTPHeaderFields 转换为 HTTPCookie

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

我想检查请求中是否存在 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

ios swift
1个回答
0
投票

方法

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。

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