프로그래밍
curl 리다이렉트 따라가기 (301 Moved Permanently)
ohlee52
2024. 12. 18. 09:17
반응형
curl
로 google.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
을 입력하면:- 301 응답을 받고,
- 자동으로
http://www.google.com/
으로 재요청하여 200 OK 응답을 받습니다. - 이 과정은 브라우저에서 투명하게 이루어지기 때문에 사용자는 이를 인식하지 못합니다.
curl
의 기본 동작
- 기본적으로
curl
은 리다이렉트를 자동으로 따라가지 않습니다. - 따라서
curl
로google.com
을 요청하면 첫 번째 301 응답만 표시되며,Location
헤더에 명시된 URL로 자동으로 재요청하지 않습니다.
반응형
3. curl
로 리다이렉트를 따라가게 하는 방법
curl
에서도 브라우저처럼 리다이렉트를 자동으로 따라가려면 -L
또는 --location
옵션을 사용하면 됩니다:
curl -L google.com
이렇게 실행하면:
google.com
요청 시 301 응답을 받고,curl
이Location
헤더의http://www.google.com/
URL로 자동 재요청하여,- 최종적으로 200 OK 응답과 함께 페이지 콘텐츠를 받습니다.
4. 결론
- 브라우저는 자동으로 301 리다이렉트를 따라가므로 최종 URL에서 200 OK 응답을 받게 됩니다.
curl
은 기본적으로 리다이렉트를 따라가지 않으므로 301 상태 코드와 함께Location
헤더만 표시됩니다.curl -L
옵션을 사용하면 브라우저와 동일하게 리다이렉트를 따라가게 됩니다.
이제 다음 명령어를 실행해 보세요:
curl -L google.com
반응형