Spring framework mvc에서 https▶ http 로 redirect 되는 문제 해결 방법
Spring Framework에서 redirect 를 사용하는 경우에 https의 페이지에서 redirect를 하더라도 http 프로토콜로 redirect 되는 현상이 발생합니다.
https 로 사용하던 페이지에서 http 로 redirect 되게 되면 의도치 않은 여러가지 문제가 발생할 수 있겠죠.
- 브라우저에서 보안 문제로 인해 https 페이지에서 http의 리소스를 가져오는 부분. (http에서 https의 리소스를 가져오는 것은 가능)
- 모바일 앱에서 https 로 링크가 걸려있다가 redirect 되면서 http 로 프로토콜이 변경되는 경우 페이지를 보여주지 않음
위의 사례 중에 마지막에 언급한 부분에 대해서 알아보겠습니다.
대표적으로 애플이 WWDC 2015에서 앞으로 앱 스토어에 앱을 등록하려면 반드시 ATS(App Transport Security) 를 따라야 한다고 발표했습니다.
iOS9부터 기본으로 탑재되는 ATS (App Transport Security) 가 적용되면서 앱스토어에 앱을 등록하려면 반드시 HTTPS를 사용하도록 하고 있습니다.
기존에 앱에서 사용하던 HTTP 통신은 차단하여 무용지물이 되게 하는 것이죠.
고로.. 기존에 https 로 사용하던 URL이 redirect 되면서 http로 변경되게 되면 ATS에 의해 차단되는 불상사가 생기겠죠.
그래서, https ▶ http 로 redirect 가 아닌 https ▶ https 로 redirect 되도록 하기 위해서는 설정이 필요합니다.
설정에 앞서 Redirect하는 소스코드를 예로 들어보면.
Redirect Example |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/**
* 회원가입 약관동의 페이지 이동
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/member/customer-join-terms.do")
public String memberJoin1Term(Model model, HttpServletRequest request) throws Exception {
HttpUtil httpUtil = new HttpUtil(request);
...
if (httpUtil.isLogining()) {
return "redirect:/index.do";
} else {
return url;
}
}
|
별도의 설정이 없는 Spring Framework의 MVC에서 redirect 하게 되면 https 프로토콜을 사용하고 있다하더라도 http 프로토콜로 변경되어 처리됩니다.
이 문제를 해결하기 위해서는 다음과 같이 설정을 추가하시면 됩니다.
Spring Framework 개발 환경에 따라서 다르겠지만
servlet-context.xml 파일에서 InternalResourceViewResolver 클래스를 사용하는 경우와 UrlBasedViewResolver 클래스를 사용하는 경우로 나뉘는데,
① InternalResourceViewResolver 클래스를 사용하는 경우
설정에 다음과 같이 redirectHttp10Compatible 관련 설정을 추가한다.
1
2
3
4
5
6
|
<beans:property name="viewClass" value="org.springbyexample.web.servlet.view.tiles2.DynamicTilesView" />
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
<beans:property name="redirectHttp10Compatible" value="false" />
</beans:bean>
|
아래의 코드 |
<beans:property name="redirectHttp10Compatible" value="false" /> |
② UrlBasedViewResolver 클래스를 사용하는 경우
설정에 다음과 같이 redirectHttp10Compatible 관련 설정을 추가한다.
1
2
3
4
|
<beans:bean p:order="1" id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="redirectHttp10Compatible" value="false" />
</beans:bean>
|
아래의 코드 |
<beans:property name="redirectHttp10Compatible" value="false" /> |
위의 두 가지 설정 중 자신의 개발환경에 맞는 설정을 해준 후 서버를 구동하여 https 에 대한 redirect가 되더라도 정상적으로 https 프로토콜을 유지하는지 확인하도록 합니다.
'Development > Java' 카테고리의 다른 글
Eclipse Console Log. 파일 저장 (0) | 2019.07.09 |
---|---|
[Eclipse] Maven Skip Test 설정 (0) | 2019.07.09 |
Spring Framework에서의 한글 깨짐 문제 (0) | 2019.06.18 |
RMI 서버/Client 실행시 UnmarshalException 발생 해결 방법 (0) | 2019.06.17 |
[Spring Framework] java.util.zip.ZipException: invalid LOC header (bad signature) (0) | 2019.06.16 |
댓글