2016-11-22 5 views
1

私は春には新しいので、私の無知を許してください。特定のhttpヘッダーが応答内に存在するようにする方法

私は自分のアプリケーションからのすべての応答は以下のヘッダが含まれていることを確認したい:

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

は、私が行方不明ですこれを行う簡単な方法は、ありますか?どんなアドバイスや可能な解決策も素晴らしいでしょう。ありがとうすべて:

+0

http://mtyurt.net/2015/07/20/spring-modify-response-headers-after-processing/ help you? –

+0

ええ、私はそれを見ましたが、これは過剰なもののように思えます、まったく同じシナリオではありません。これらのヘッダーがすべての応答に存在することを確認したい。これを達成するためのもっと簡単な方法がなければなりません。 –

+0

レスポンスオブジェクトにアクセスできますか? – donlys

答えて

1

ので、私は同様に、カスタム・フィルタを作成することによって、これを解決:

@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() { 

    } 
} 

これは、コードベース内の別のカスタムフィルタを別の問題を作成しました。だから私はこのブログ投稿の助けを借りてこの追加の問題を解決します: http://mtyurt.net/2015/07/15/spring-how-to-insert-a-filter-before-springsecurityfilterchain/。これが誰かを助けることを願っています:)

1

私はそれをテストすることはできませんので、それがあなたのために働くかどうかはわかりません。私が確信していることは、あなたができることです。最も簡単な方法は、

を作成し、postHandleメソッドをオーバーライドします。

これを試してみる:

インターセプタクラス:

パッケージ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"); 
    } 
} 

は、あなたが設定され、春のBeanとして、このクラスを宣言することを忘れてはいけないことができますfieldsヘッダのリストです。

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

ええ、ありがとう、素晴らしい解決策になりますが、上記のリンクの理由でおそらく動作しないようです。 –

+0

どのリンク?? ' [あなたのコントローラ]' –

+0

http://mtyurt.net/2015/07/20/spring-modify-response-headers-after-processing/ –

関連する問題