java - play框架全局设置响应头

标签 java playframework httpresponse

如何为我的 playframework 项目全局设置 respnose header ? 我不想为每个 REST 方法添加内容。

    response().setHeader("Access-Control-Allow-Origin", "*");
    response().setHeader("Allow", "*");
    response().setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
    response().setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent");

这是我目前添加到每个方法中的内容。

谢谢

最佳答案

Play 支持filters ,这是一种全局修改 HTTP 请求/响应的方法。

类似于:

public class GlobalHeaders extends Filter {

@Inject
public GlobalHeaders(Materializer mat) {
    super(mat);
}

@Override
public CompletionStage<Result> apply(
        Function<Http.RequestHeader, CompletionStage<Result>> nextFilter,
        Http.RequestHeader requestHeader) {
    return nextFilter.apply(requestHeader).thenApply(result -> {

        return result.setHeader("Access-Control-Allow-Origin", "*")
          .setHeader("Allow", "*")
          .setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS")
          .setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent");
    });
}

}

关于java - play框架全局设置响应头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43345539/

相关文章:

java - doFilter HttpServletRequest 返回空

java - 查找对象参数化注释的运行时类类型

java - 在 AsyncTask 中打开失败 : EACCES (Permission denied) from IoBridge. java

java - 从响应实体 json 获取一个字段

mongodb - 使用 cashbah 在 Scala 中更新 Mongo 文档

java - 通过一对多关系查询 Ebean

node.js - 在路由函数之外发送 http 响应?

java - 在嵌套泛型类型上使用通配符,例如 CompletableFuture<List<?延伸一些东西>>

java - 实例化后,列表可以以某种方式分配给另一个类的列表吗?

scala - 有条件的Scala游戏演变