2013-07-16 1 views
0

HttpServletResponseWrapper.sendRedirect() 메서드를 덮어 쓰고 있습니다. 일반적으로 리디렉션 URL은 http 또는 https으로 시작됩니다. 하지만 다음과 같은 URL이 있습니다.HTTP 또는 HTTPS 프로토콜로 시작하지 않는 URL을 올바르게 리디렉션하는 방법은 무엇입니까?

//www.google.com.

이 URL은 js의 window.location에이 URL을 할당 할 때 작동합니다. 그러나이 URL을 리디렉션하려고하면 오류가 발생합니다. 왜냐하면 항상 상대 경로로 간주하기 때문입니다.

URL을 올바르게 리디렉션하는 방법을 알고 계십니까?

+0

제 경험상 주소의 '프로토콜'부분이 필요합니다. 브라우저를 놓친다면 브라우저가 더 관대합니다 (따라서 새 창에서 열리는 것이 좋습니다). firefox (또는 유사한 것)의 출처를보고 그들이 프로토콜의 문제를 어떻게 해결하는지 볼 수 있습니다. 또는 리디렉션 링크에서 프로토콜을 테스트하고 누락 된 경우 새 창에서 엽니 다. – DaveM

+0

다음을 참조하십시오. http://stackoverflow.com/questions/8951423/html-links-without-http-protocol – songyy

답변

0

이 (스키마 또는 호스트를 지정하지 않은 즉, 사람)를 상대 URL을 처리하기 위해 여부, 당신은 ServletRequest에서 누락 된 부분을 복사 할 필요가 처리를 트리거했습니다.

URL requestURL = new URL(request.getRequestURL()); 
URL redirectURL = new URL(requestURL, "//www.google.com"); 
0

참조 this question에, 프로토콜이없는 링크는 기본적으로 현재의 프로토콜을 사용합니다 : 자바 클래스 URL는 도우미 그것을위한 방법이 있습니다.

따라서 현재 페이지의 프로토콜을 사용할 수 있습니다.

관련 문제