Post

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("...");


출처

  1. 301 vs 302 상태 코드 차이점 (SEO)
This post is licensed under CC BY 4.0 by the author.