1. ホーム
  2. java

[解決済み] Spring MVCのコントローラアクションから外部URLへのリダイレクト

2022-05-06 01:09:52

質問

以下のコードで、ユーザーをプロジェクト内のURLにリダイレクトしていることに気づきました。

@RequestMapping(method = RequestMethod.POST)
public String processForm(HttpServletRequest request, LoginForm loginForm, 
                          BindingResult result, ModelMap model) 
{
    String redirectUrl = "yahoo.com";
    return "redirect:" + redirectUrl;
}

一方、以下は意図したとおりに正しくリダイレクトされますが、http:// または https:// が必要です。

@RequestMapping(method = RequestMethod.POST)
    public String processForm(HttpServletRequest request, LoginForm loginForm, 
                              BindingResult result, ModelMap model) 
    {
        String redirectUrl = "http://www.yahoo.com";
        return "redirect:" + redirectUrl;
    }

リダイレクトは、有効なプロトコルが入っていようがいまいが、常に指定されたURLにリダイレクトさせ、ビューにはリダイレクトさせたくありません。どうすればよいのでしょうか?

ありがとうございます。

解決方法は?

2つの方法で行うことができます。

1つ目

@RequestMapping(value = "/redirect", method = RequestMethod.GET)
public void method(HttpServletResponse httpServletResponse) {
    httpServletResponse.setHeader("Location", projectUrl);
    httpServletResponse.setStatus(302);
}

2番目

@RequestMapping(value = "/redirect", method = RequestMethod.GET)
public ModelAndView method() {
    return new ModelAndView("redirect:" + projectUrl);
}