프로그래밍

curl 리다이렉트 따라가기 (301 Moved Permanently)

ohlee52 2024. 12. 18. 09:17
반응형

curlgoogle.com에 접속하면 HTTP 301 Moved Permanently 응답을 받지만, 브라우저에서는 바로 200 OK 응답으로 페이지가 표시되는 이유는 리다이렉트 처리 방식의 차이 때문입니다.

curl -i google.com
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/

1. HTTP 301 리다이렉트란?

  • HTTP 상태 코드 301은 "Moved Permanently"를 의미합니다. 즉, 요청한 URL이 영구적으로 다른 URL로 이동되었음을 서버가 클라이언트에게 알려줍니다.
  • Location 헤더에 이동할 URL(예: http://www.google.com/)이 포함되어 있습니다.

2. 브라우저와 curl의 리다이렉트 처리 방식 차이

브라우저의 리다이렉트 처리

  • 브라우저는 301, 302 등 리다이렉트 응답을 받으면 자동으로 Location 헤더에 명시된 URL로 재요청합니다.
  • 즉, 사용자가 google.com을 입력하면:
    1. 301 응답을 받고,
    2. 자동으로 http://www.google.com/으로 재요청하여 200 OK 응답을 받습니다.
    3. 이 과정은 브라우저에서 투명하게 이루어지기 때문에 사용자는 이를 인식하지 못합니다.

curl의 기본 동작

  • 기본적으로 curl리다이렉트를 자동으로 따라가지 않습니다.
  • 따라서 curlgoogle.com을 요청하면 첫 번째 301 응답만 표시되며, Location 헤더에 명시된 URL로 자동으로 재요청하지 않습니다.
반응형

3. curl로 리다이렉트를 따라가게 하는 방법

curl에서도 브라우저처럼 리다이렉트를 자동으로 따라가려면 -L 또는 --location 옵션을 사용하면 됩니다:

curl -L google.com

이렇게 실행하면:

  1. google.com 요청 시 301 응답을 받고,
  2. curlLocation 헤더의 http://www.google.com/ URL로 자동 재요청하여,
  3. 최종적으로 200 OK 응답과 함께 페이지 콘텐츠를 받습니다.

4. 결론

  • 브라우저는 자동으로 301 리다이렉트를 따라가므로 최종 URL에서 200 OK 응답을 받게 됩니다.
  • curl은 기본적으로 리다이렉트를 따라가지 않으므로 301 상태 코드와 함께 Location 헤더만 표시됩니다.
  • curl -L 옵션을 사용하면 브라우저와 동일하게 리다이렉트를 따라가게 됩니다.

이제 다음 명령어를 실행해 보세요:

curl -L google.com
반응형