Linux / 명령어 / curl - URL 요청과 HTTP 응답 확인
curl은 URL로 데이터를 요청하거나 전송하는 도구입니다. HTTP 응답 헤더 확인, API 호출, 파일 다운로드 등 여러 작업에 사용하며, 기본적으로 응답 본문을 표준 출력에 보여 줍니다.
curl 명령어란?
HTTP 오류 상태가 반환돼도 기본 curl의 종료 상태는 성공일 수 있습니다. 스크립트에서 4xx·5xx를 실패로 처리하려면 --fail 또는 상황에 따라 --fail-with-body를 사용하세요. -L은 리디렉션을 따라가며 -o는 결과를 지정 파일에 저장합니다.
기본 문법
curl [옵션] URL
설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man curl으로 현재 시스템의 설명을 확인하세요.
사용 예제
응답 헤더 확인
서버가 HEAD 요청을 지원하면 헤더와 HTTP 상태를 볼 수 있습니다.
curl -I https://example.com/
본문과 상태 확인
리디렉션을 따르면서 HTTP 오류 상태를 실패로 취급합니다.
curl -fL https://example.com/
파일에 저장
응답 본문을 현재 디렉터리의 지정 파일에 기록합니다.
curl -fL -o example.html https://example.com/
HTTP 상태만 확인한 결과
curl은 URL 요청을 보내고 응답을 확인합니다. 다음은 본문을 버리고 HTTP 상태 코드만 표시하므로 자동화에서 200·404·500 같은 결과를 구분하기 쉽습니다.
curl -sS -o /dev/null -w '%{http_code}\n' https://example.com
정상 응답을 받은 시점의 예시 출력:
200
200은 HTTP 응답을 받았다는 뜻이지 페이지 내용이 예상과 같다는 증거는 아닙니다. 네트워크 오류에서는 상태 코드가 000이거나 오류가 별도로 표시될 수 있습니다. 리디렉션 최종 목적지를 따라가려면 -L을 사용하고, 인증 토큰을 명령행에 직접 적을 때는 셸 기록·프로세스 목록 노출을 주의하세요.
curl은 HTTP 4xx·5xx 응답을 받아도 기본적으로 전송 자체가 성공했다면 종료 코드가 0일 수 있습니다. 스크립트에서 HTTP 오류를 실패로 취급하려면 --fail 또는 필요에 따라 --fail-with-body를 검토하세요. 비밀 토큰을 포함한 상세 출력은 로그에 남기기 전에 가려야 합니다.
주요 옵션과 형식
| 옵션·형식 | 설명 |
|---|---|
-I |
HEAD 요청으로 응답 헤더를 확인합니다. |
-L |
리디렉션을 따라갑니다. |
-o 파일 |
응답을 지정한 파일에 저장합니다. |
-O |
원격 파일 이름으로 저장합니다. |
-f |
HTTP 400 이상을 오류로 취급하고 본문 출력은 억제합니다. |
-H 헤더 |
요청 헤더를 지정합니다. |
사용할 때 주의할 점
서버가 HEAD를 거부할 수 있으므로 curl -I 실패만으로 URL이 없는 것으로 판단하지 말고 GET으로 다시 확인하세요. 불특정 URL의 스크립트를 바로 셸에 연결하지 마세요. 인증 토큰을 명령줄에 직접 넣으면 셸 기록이나 프로세스 목록에 남을 수 있고, -k는 인증서 검증을 꺼 보안을 낮춥니다.
자주 묻는 질문
curl이 404를 받았는데 명령이 성공한 것처럼 보이는 이유는?
기본적으로 HTTP 상태와 curl 자체의 전송 성공 여부를 별도로 취급하기 때문입니다. 스크립트에서는 -f 또는 --fail-with-body를 검토하세요.
공식 문서
옵션의 정확한 동작과 구현별 차이는 curl 관련 공식 문서에서 확인할 수 있습니다.









