HTTP 관련 기록
HTTP 관련 문제가 발생했던 상황, 해결법을 기록합니다.
301 vs 302
페이지를 이동하는 경우, 301 혹은 302 라는 코드를 접하게 됩니다.
- 영구적인 이동인 경우 301
- 일시적 이동은 302
SEO
검색 엔진에서의 차이점
- 301: 검색 엔진이 이전 페이지에 대한 데이터를 제거하고 새로운 URL 정보를 수집합니다.
- 302: 검색 엔진이 이전 페이지에 대한 정보를 유지합니다.
브라우저 캐싱
- 301: 브라우저 내에서 알아서 캐싱이 일어납니다.
- 302:
Cache-Control
Expire
- 위 헤더를 명시해주어야 브라우저 캐싱이 가능합니다.
따라서 서버 로직을 거치고, URL 이동이 일어나야 하는 상황에 사용하는 것이 적절합니다.
프론트
프론트에서는 일시적인 리다이렉트, 즉 302 만 가능합니다. 서버에서는 301, 302 를 선택할 수 있습니다. Java 에서는 HttpServletResponse
, 즉 HTTP 응답
의 헤더에 필요한 정보를 추가하면 됩니다.
인증, 인가 과정을 서버를 거쳐서 프론트에서 리다이렉트 시키는 경우 브라우저에 캐싱될 이유가 없기 때문에 .sendRedirect
메서드 사용 시, 302 로 응답을 하게됩니다.
1
2
3
4
5
6
7
8
// 영구 리다이렉트
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", 'www.example.com/new');
// 일시 리다이렉트
response.sendRedirect("...");
출처
This post is licensed under CC BY 4.0 by the author.