작성
·
428
답변 2
2
안녕하세요. steadyJay님
redirectAttribute는 redirect시에 URL 값 자체에는 사용하면 안됩니다.
URL에 있는 / 같은 부분을 %2F로 인코딩 하기 때문에 브라우저가 인식하지 못합니다.
좀더 쉽게 설명드리면
URL안에 있는 /members/{id} 처럼 어떤 값을 표현할 때는 사용하실 수 있습니다.
그런데 URL 자체를 표현하면 / -> 부분도 인코딩 되기 때문에 URL 자체를 사용할 수는 없습니다.
감사합니다.
0
궁금한게 있습니다!
return "redirect:" + redirectURL;
처음 질문자께서 / 부분 까지 인코딩하신게 문제였는데 제가 궁금한것은 영한님이 구현하신 코드에서는 redirectAttribute를 사용안하셨는데 [mvc1에서 url에 + 를 사용하는 것은 인코딩 문제로 인한 위험한 문제]를 고려해야하지 않나요??
우디 님께서 말씀하신 부분은
만약에 미인증 사용자가 /items 라는 url에 접근했을때
redirectURL 변수에 "/items" 라는 문자열이 담기게 되는데
이때
return "redirect:" + redirectURL; // <- return "redirect:/items"
이런식으로 되지만 "redirectURL 변수가 인코딩 되지않아서 문제가 생기지 않냐"는 말씀이신 것 같습니다.
근데 해당 문제는 에초에 redirectURL 변수 자체가
LoginCheckFilter 의 doFilter 메소드에서
HttpServletRequest httpRequest = (HttpServletRequest) request;
String requestURI = httpRequest.getRequestURI(); // 이때 인코딩된 URI 값을 가지고 온다.
인코딩된 URI을 컨트롤러에서 전달받기 때문에
우디님이 질문하신
'[mvc1에서 url에 + 를 사용하는 것은 인코딩 문제로 인한 위험한 문제]'
는 고려하지 않아도 되는 문제입니다.
혹시 제가 틀린 설명을 했다면 정정해주시면 감사드리겠습니다.
아 그렇군요!! 생각해보니 당연한 내용이었네요 ... 친절하게 답변해주셔서 감사합니다!!