不幸的是,目前还没有一种从 Java 中创建和使用过滤器的好方法。但是您可以使用 Scala 轻松完成所需的工作。
创建一个新文件app/filters/AddResponseHeader.scala
,其中包含:
package filters
import play.api.mvc._
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
object AddResponseHeader extends Filter {
def apply(f: (RequestHeader) => Future[SimpleResult])(rh: RequestHeader): Future[SimpleResult] = {
val result = f(rh)
result.map(_.withHeaders("FOO" -> "bar"))
}
}
并创建一个新文件app/Global.scala
,其中包含:
import filters.AddResponseHeader
import play.api.mvc.WithFilters
object Global extends WithFilters(AddResponseHeader)
这应该对每个响应应用一个新的响应标头。
更新:有一种方法可以在Global.java
文件中使用它:
@Override
public <T extends EssentialFilter> Class<T>[] filters() {
return new Class[] {AddResponseHeader.class};
}
并将object AddResponseHeader
上面的内容更改为class AddResponseHeader
.