2

是否可以在 Global 类的 Play Framework 的 doFilter 方法中添加 cookie?

我试过了:

override def doFilter(action: EssentialAction): EssentialAction = EssentialAction { request =>
  if (request.queryString.contains("q")) {
    action.apply(request).map(_.withCookies(
      Cookie("q", request.queryString.get("q").get(0), 3600)
    ))
  }
}

但 cookie 不会发送到浏览器。

4

1 回答 1

1

我正在使用 Playframework 2.2 并使用类似的东西:

import play.api.mvc._
import play.api._
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global

object ResponseFilter extends Filter {
  def apply(next: (RequestHeader) => Future[SimpleResult])(rh: RequestHeader) = {
    next(rh).map(_.withHeaders("Access-Control-Allow-Origin" -> "*").as("application/json; charset=utf-8"))
  }
}

我的Global对象看起来像这样:

import play.api._
import play.api.mvc._
import service.ResponseFilter

object Global extends WithFilters(ResponseFilter) with GlobalSettings

这对我来说很好。所以我想你可以用_.withHeaders(...)零件替换_.withCookies(...)零件,这也对你有用。

请注意,在早期版本的 playframework 中有些不同

于 2013-10-23T06:29:19.473 回答