반응형
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
반응형
'프로그래밍' 카테고리의 다른 글
curl 프록시 옵션 완벽 가이드 (0) | 2024.12.18 |
---|---|
정규표현식(Regex) 기본문법과 예제 - 이메일, 전화번호 (2) | 2024.12.09 |
Express request query, path, body 예제 (1) | 2024.12.01 |
Mac Node.js 버전 관리 도구: n vs nvm 비교 및 사용법 (1) | 2024.11.27 |
Swift 시간복잡도 빅오(Big-O) 주요 예제 (0) | 2024.11.22 |