是否可以在Global Framework中的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不会被发送到浏览器。
答案 0 :(得分: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中的情况有所不同