【问题标题】:Cannot set Content-Type / MIME-type in java servlet无法在 java servlet 中设置 Content-Type / MIME-type
【发布时间】:2016-02-27 05:03:25
【问题描述】:

我正在使用以下过滤器,明确设置对 application/json 的响应的内容类型:

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    HttpServletResponse response = (HttpServletResponse) servletResponse;
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setContentType("application/json");
    response.setCharacterEncoding("utf-8");
    response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    filterChain.doFilter(servletRequest, servletResponse);
}

但是,它不起作用,并且在浏览器中请求时的内容类型是 text/html。其他标题工作正常。

【问题讨论】:

  • HttpServletResponse 下游会发生什么?
  • filterChain 下方是否覆盖了标题?如果将setContentType 移到doFilter 之后会怎样?
  • 响应由 Spring @RestController 调度。将 setContentType 移动到方法的底部并没有改变结果。

标签: java servlets http-headers mime-types


【解决方案1】:

我意识到这是旧的。 我遇到了这个问题,我的解决方法是:

    resp.setHeader("Content-Disposition","attachment; filename="+fname);

见:http://archive.oreilly.com/pub/a/onjava/excerpt/jebp_3/index3.html

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 2016-10-29
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 2019-02-06
    • 2023-03-28
    • 2015-12-04
    • 2018-03-11
    相关资源
    最近更新 更多