從Spring MVC 中的控制器操作重定向到外部URL
嘗試從Spring MVC 中的控制器操作重定向到外部URL 時,了解預設「redirect:」語法的限制非常重要。預設情況下,Spring 重定向到應用程式上下文路徑中的 URL。
重定向到內部URL
如第一個程式碼片段所示:
@RequestMapping(method = RequestMethod.POST) public String processForm(...) { String redirectUrl = "yahoo.com"; return "redirect:" + redirectUrl; }
此程式碼嘗試重定向到URL「yahoo .com”,但缺乏有效的協議(例如,http:// 或https://)。因此,Spring 將其解釋為內部 URL 並重定向到應用程式上下文路徑中的「yahoo.com」。
使用協定重定向到外部URL
到重定向到具有協定的外部URL,可以使用以下方法:
@RequestMapping(method = RequestMethod.POST) public String processForm(...) { String redirectUrl = "http://www.yahoo.com"; return "redirect:" + redirectUrl; }
透過在URL,Spring 正確地將使用者重定向到外部網站。
重新導向到沒有協定的外部 URL
要使用 Spring MVC 重新導向到沒有協定的外部URL,需要兩個存在替代方案:
方法1:
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public void method(HttpServletResponse httpServletResponse) { httpServletResponse.setHeader("Location", projectUrl); httpServletResponse.setStatus(302); }
此方法手動設定回應中的「Location」標頭和對應的HTTP 狀態代碼(302) 以觸發重定向。
方法2:
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public ModelAndView method() { return new ModelAndView("redirect:" + projectUrl); }
此方法使用「ModelAndView」類別建立重新導向回應指定的 URL。
以上是如何從 Spring MVC 控制器操作重新導向到外部 URL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!