2016-05-12 17 views
3

301(永久)対302(一時的な)、私はHTTPリダイレクト:だからここに私は301が春にリダイレクトしたい春

@RequestMapping(value = { "/devices" } , method = RequestMethod.GET) 
    private String initGetForm(@ModelAttribute("searchForm") final SearchForm searchForm, 
          BindingResult result, 
          HttpServletRequest request, 
          HttpServletResponse response, 
          Model model, Locale locale) throws Exception { 


     String newUrl = "/devices/en"; 

     response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); 
     response.setHeader("Location", newUrl); 
     response.setHeader("Connection", "close"); 

     return "redirect:" + newUrl; 

} 

を使用するコードの一部でも、IEの開発者ツールをチェックするIこれはステータス302は一時的に移動

+2

あなたは 'redirect:+ newUrl'を返すので、これは基本的には役に立たない前にすべてを行います。何も返さず、voidを返す。 –

答えて

5

Springは、特別なリダイレクトプレフィックスを持つ論理ビュー名を返すので、リダイレクトを処理するときに応答ヘッダーをリセットしています。手動でヘッダーを設定したい場合は、Springビュー解像度を使用せずに応答を処理します。あなたがTEMPORARY_REDIRECTステータスでRedirectView使用することができます

@RequestMapping(value = { "/devices" } , method = RequestMethod.GET) 
private void initGetForm(@ModelAttribute("searchForm") final SearchForm searchForm, 
           BindingResult result, 
           HttpServletRequest request, 
           HttpServletResponse response, 
           Model model, Locale locale) throws Exception { 

      String newUrl = request.getContextPath() + "/devices/en"; 
      response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); 
      response.setHeader("Location", newUrl); 
      response.setHeader("Connection", "close"); 

    } 
4

を次のようにコードを変更します。

@RequestMapping(value = { "/devices" } , method = RequestMethod.GET) 
private ModelAndView initGetForm(@ModelAttribute("searchForm") final SearchForm searchForm, 
          BindingResult result, 
          HttpServletRequest request, 
          HttpServletResponse response, 
          Model model, Locale locale) throws Exception { 
    .... 
    RedirectView redirectView = new RedirectView(url); 
    redirectView.setStatusCode(HttpStatus.TEMPORARY_REDIRECT); 
    return new ModelAndView(redirectView); 
} 
関連する問題