본문 바로가기

개발 팁

Redirect 와 Forward

Redirect는 클라이언트의 요청에 대해 서버가 응답으로 다른 URL에 재접속 하라고 명령을 보내는 것을 말한다.

Redirect는 URL을 다시 가리킨다 라는 뜻을 가지며

클라이언트는 서버가 응답한 URL로 다시 요청을 보내게 된다.

Redirect가 일어나면 URL 주소가 바뀌면서 다시 접속하는걸 확인할 수 있다.

클라이언트로 Redirect가 일어나는걸 알 수 있다.

 

절차.(server)

1.(cliend) 서버에 get요청

Get HelloWorld.com/21

 

2.(server) 

HelloWorld.com/21이 new_HelloWorld.com/2로 이동되었음을 확인,

 

3.(server)응답

HTTP / 1.1 304 OK

location : new_HelloWorld.com/2

 

4.(client) 3번응답에 따라 재 요청

Get new_HelloWorld.com/2

 

5.(server)

new_HelloWorld.com/2 를 확인

html을 응답

 

6.(server) 응답

HTTP/1.1 200 OK

 

7.(client) 확인

연결된 new_HelloWorld.com/2 페이지 확인

 

client에서 url이 바뀌는것으로 redirect 확인 가능

 

Forword

Forword는 서버내부에서 추가적으로 일어나는 호출이다.

클라이언트의 URL에 대한 요청이 들어오면

해당 URL이 다른 URL로 포워딩된것이 확인되었을경우

서버에서 포워딩된 URL의 리소스를 확인하여 클라이언트에 응답한다.

 

포워딩이 일어나면 클라이언트단 에서는 아무런 동작을 하지 않으며

모든 동작은 서버에서 처리된다.

따라서 Client에서 요청한 URL은 물론 요청정보도 바뀌지 않는다.

 

1. (client) 요청

Get HelloWorld.com/22

 

2.(server) 응답

HelloWorld.com/22가

HelloWorld.com/WEB-INF/90에 매핑된걸 확인

 

3.(server)

HelloWorld.com/WEB-INF/90 의 리소스를 확인

 

4.(server) 응답

HTTP / 1.1 200 OK

 

5.(client)

URL의 변경없이 결과를 받아온다.

 

Redirect : 사용자 요청정보가 바뀌어 버리는것

Forward : 사용자 요청을 유지한채 서버 내부동작만 바뀌는것.

 

Redirect는 클라이언트의 요청에 의해 서버의 DB에 변화가 생기는 작업에 사용

예를들어 DB의 유저 테이블을 변경하는 회원가입과 같은 경우

Redirect 가 사용되어야 요청을 중복해서 보내는것을 방지할 수 있다.

 

Forward 는 특정 URL에 대해 외부에 공개되지 말아야하는 부분을 가리는데 사용하거나 조회를 위해 사용된다.

스프링의 경우 /WEB-INF/에 있는 View에 대한 정보들이 외부에 직접 공개되지 말아야 할 때

내부에서 포워딩을 통해 /WEB-INF/경로를 가리키도록 한다.

예를들어 HelloWorld.com/25를 요청하면 

HelloWorld.com/WEB-INF/25를 응답하는 방식이다.

 

'개발 팁' 카테고리의 다른 글

API , REST API 차이  (0) 2023.03.10
JPA @Inheritance , @MappedSuperclass , @Embedded, @Embeddable  (0) 2023.02.24
@AllArgsConstructor / @RequiredArgsConstructor  (0) 2023.02.23
@JsonIgnore  (0) 2023.02.23
@RequestBody / @ResponseBody  (0) 2023.02.21