简体   繁体   English

Java&Jersey 1.17:自定义默认响应标头

[英]Java & Jersey 1.17: Custom default response headers

I am currently using Java and Jersey 1.17 to create a web service. 我目前正在使用Java和Jersey 1.17来创建Web服务。 However, in all the response headers, I always get the current version of whatever web container I am using, such as 但是,在所有响应头中,我总是得到我正在使用的任何Web容器的当前版本,例如

Content-Type -> application/json
Server -> Jetty(8.1.10.v20130312)
Transfer-Encoding -> chunked

is there any way in Jersey to remove the "Server" key-value from the response headers by default, without having to create the Response, remove it manually and then return it? 是否有任何方法在Jersey中默认从响应头中删除“服务器”键值,而不必创建响应,手动删除它然后返回它?

Any help is much appreciated! 任何帮助深表感谢!

I don't think jersey provides this feature but you can achieve this by writing a Servlet Response Filter. 我不认为jersey提供此功能,但您可以通过编写Servlet响应过滤器来实现此功能。

Learn more about servlet filters here: http://punekaramit.wordpress.com/2010/03/16/intercepting-http-response-using-servlet-filter/ 在此处了解有关servlet过滤器的更多信息: http//punekaramit.wordpress.com/2010/03/16/intercepting-http-response-using-servlet-filter/

Or read the Oracle docs: http://www.oracle.com/technetwork/java/filters-137243.html 或者阅读Oracle文档: http//www.oracle.com/technetwork/java/filters-137243.html

Here is tutorial how to use filtering requests and responses in java. 这是教程如何在java中使用过滤请求和响应。 The Java EE 5 Tutorial Java EE 5教程

You can use HttpServletResponse.setHeader(java.lang.String name, java.lang.String value) to set any header you want. 您可以使用HttpServletResponse.setHeader(java.lang.String name,java.lang.String value)来设置所需的任何标头。

Regards, Evgeniy 此致,Evgeniy

Creating such a filter is pretty easy: 创建这样的过滤器非常简单:

public class ServerHeaderFilter implements ContainerResponseFilter
{
  private static final String SERVERHEADER = "Server";

  @Override
  public ContainerResponse filter(final ContainerRequest request, final ContainerResponse response)
  {
    response.getHttpHeaders().remove(SERVERHEADER);
    return response;
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM