在http4s中获取中间件中的cookies?

Get cookies in middleware in http4s?

我正在尝试编写可以提取特定 cookie 并将信息存储在 ContextRequest 中的中间件。 这是我的测试代码:

 def cookie[F[_]: Sync](
               logger: Logger[F]
  ): Kleisli[F, Request[F], ContextRequest[F, Option[Cookie]]] =
    Kleisli { request: Request[F] =>
      for {
      _ <- logger.debug(s"finding cookie")
      _ <- logger.debug(request.cookies.map(_.name).mkString(","))
      } yield ContextRequest(none[Cookie], request)
    }

然后我这样使用它:

def httpApp: HttpApp[F] = cookie(logger).mapK(OptionT.liftK).andThen(routesWithCookieContext).orNotFound

问题是:请求没有任何 cookie,所以我在 Chrome 开发工具和日志中的请求详细信息中看到它们。我做错了什么以及如何让它发挥作用?

原来是cookie内容的问题。我正在使用 Circle 的 .asJson.noSpaces 将 case class 转换为字符串并将其写入 cookie 的值。但由于某些原因,其值中包含 json 的 cookie 不起作用。