Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确保响应中存在某些http头_Java_Spring_Spring Security_Spring Boot - Fatal编程技术网

Java 如何确保响应中存在某些http头

Java 如何确保响应中存在某些http头,java,spring,spring-security,spring-boot,Java,Spring,Spring Security,Spring Boot,我刚到春天,请原谅我的无知 我希望确保我的应用程序的每个响应都包含以下标题: Content-Type → application/json;charset=UTF-8 Date →Tue, 22 Nov 2016 16:30:21 GMT 有没有一种简单的方法可以做到这一点,而我却没有?任何建议或可能的解决方案都会很好。谢谢大家:)我不确定这是否适用于您,因为我无法测试它。我确信你能做到,最简单的方法是: 创建一个spring拦截器并覆盖postHandlemethode 试试这个: 拦截器

我刚到春天,请原谅我的无知

我希望确保我的应用程序的每个响应都包含以下标题:

Content-Type → application/json;charset=UTF-8
Date →Tue, 22 Nov 2016 16:30:21 GMT

有没有一种简单的方法可以做到这一点,而我却没有?任何建议或可能的解决方案都会很好。谢谢大家:)

我不确定这是否适用于您,因为我无法测试它。我确信你能做到,最简单的方法是:

创建一个spring拦截器并覆盖
postHandle
methode

试试这个:

拦截器类别:

包com.mkyong.common.interceptor

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class MyInterceptor extends HandlerInterceptorAdapter{


    public void postHandle(
        HttpServletRequest request, HttpServletResponse response,
        Object handler, ModelAndView modelAndView)
        throws Exception {

        response.setHeader("Content-Type","application/json;charset=UTF-8");
    }
}
下面是您可以设置的标题列表,不要忘记将这个类声明为Springbean

<interceptors>
        <interceptor>
            <mapping path="/**" />
            <beans:bean class="package.MyInterceptor"></beans:bean>
        </interceptor>
</interceptors>

因此,我通过创建如下自定义过滤器解决了此问题:

@Component
public class ResponseHeaderFilter implements Filter {
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {

  }

  @Override
  public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
      throws IOException, ServletException {

    HttpServletResponse response = (HttpServletResponse) resp;

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z");
    String dateString = simpleDateFormat.format(UnixTime.now() * 1000);

    response.setHeader("Date", dateString);
    response.setHeader("Content-Type", "application/json;charset=UTF-8");

    chain.doFilter(req, resp);

  }

  @Override
  public void destroy() {

  }
}
这就给代码库中的另一个自定义过滤器带来了另一个问题。因此,我借助这篇博文解决了这个额外的问题:
. 希望这有助于某人:)

对你有帮助吗?是的,我看到了,但这似乎有点过头了,情况也不完全一样。我想确保每个响应上都有这些标题。必须有一个更简单的方法来实现这一点,也许在配置中??您有权访问响应对象吗?是的,am“returning”responseEntity(响应对象,HttpStatus)是的,谢谢,这将是一个很好的解决方案,但似乎不起作用,可能是因为上面提供的链接中的原因。什么链接<代码>[yourcontroller]