Skip to content

curl 플래그 해설

매일 쓰는 curl 플래그를 작업별로 묶었습니다: 요청 구성, 헤더 설정, 인증, 신원 표시, 출력 제어, 리다이렉트 따라가기, 연결 조정, 디버깅. 각 행은 플래그를 실제 호출 예시와 짝지어 보여줍니다.

curl은 HTTP 요청을 보내고 응답 본문을 출력합니다. 강력함의 대부분은 플래그에 있습니다. 메서드를 선택하고, 헤더와 데이터를 붙이고, 인증을 처리하고, 무엇을 출력할지 정하는 것이 플래그입니다. 더 명확한 곳에는 긴 형식을 표기했고, 짧은 형식은 한 글자입니다. 셸이 쿼리 문자열을 망치지 않도록 URL을 따옴표로 묶으세요.

참고 표 · 54 항목
54 of 54 rows
요청 구성
HTTP 메서드를 설정한다.curl -X POST https://api.test
요청 헤더를 추가한다.curl -H "Accept: application/json" URL
본문을 보낸다(POST와 기본 콘텐츠 타입을 설정한다).curl -d "name=Ada" URL
-d 값을 쿼리 파라미터로 GET에 붙인다.curl -G -d "q=hi" URL
멀티파트 폼 데이터를 보낸다(파일 업로드).curl -F "file=@photo.png" URL
URL 인코딩을 적용한 폼 데이터를 보낸다.curl --data-urlencode "name=Ada Lovelace" URL
PUT으로 파일을 업로드한다.curl -T big.zip URL
업로드를 원격 파일을 대체하는 대신 이어 붙인다.curl -a -T log.txt ftp://server.test/logs/log.txt
JSON과 API
올바른 콘텐츠 타입으로 JSON을 보낸다.curl -H "Content-Type: application/json" -d '{"a":1}' URL
파일의 내용을 본문으로 보낸다.curl -d @body.json URL
헤더를 직접 설정하지 않고 JSON을 보낸다(curl 7.82 이상).curl --json '{"a":1}' URL
인증
사용자와 비밀번호를 이용한 HTTP Basic 인증.curl -u ada:s3cr3t URL
OAuth 베어러 토큰을 보낸다.curl --oauth2-bearer TOKEN URL
어떤 토큰 스킴이든 직접 보낸다.curl -H "Authorization: Bearer TOKEN" URL
상호 TLS를 위해 클라이언트 인증서와 키를 제시한다.curl --cert client.pem --key key.pem URL
하나의 CA 번들 파일로 서버를 검증한다.curl --cacert ca.pem URL
CA 디렉터리로 서버를 검증한다.curl --capath /etc/ssl/certs URL
프록시를 통해 요청을 보낸다.curl -x http://proxy.test:8080 URL
프록시 구간에만 TLS 검증을 건너뛴다.curl -x https://proxy.test:8443 --proxy-insecure URL
최소 버전으로 TLS 1.3을 요구한다.curl --tlsv1.3 URL
신원
커스텀 User-Agent 문자열을 보낸다.curl -A "Mozilla/5.0" URL
Referer 헤더를 보낸다.curl -e https://example.com/page URL
요청과 함께 쿠키를 보낸다.curl -b "session=abc123" URL
응답 쿠키를 파일에 저장한다.curl -c cookies.txt URL
출력
본문을 파일로 쓴다.curl -o page.html URL
원격 파일 이름으로 본문을 저장한다.curl -O https://site/file.tgz
본문 위에 응답 헤더를 출력한다.curl -i URL
헤더만 가져온다(HEAD를 보낸다).curl -I URL
진행률 표시기와 오류를 숨긴다.curl -s URL
본문 뒤에 형식 문자열을 출력한다(타이밍, 상태).curl -w "%{http_code}\n" -o /dev/null URL
HTTP 오류 시 0이 아닌 코드로 종료하고 오류 본문은 건너뛴다.curl -f URL
HTTP 오류 시 0이 아닌 코드로 종료하되 본문은 출력한다.curl --fail-with-body URL
Content-Disposition 헤더에서 저장 파일 이름을 정한다.curl -OJ URL
중단된 전송을 멈춘 지점부터 이어 받는다.curl -C - -O URL
기본 진행 표시기 대신 진행률 바를 보여준다.curl -# -O URL
조용한 모드에서도 오류를 출력한다.curl -sS URL
응답 헤더를 파일로 쓴다.curl -D headers.txt URL
압축된 응답을 요청하고 해독한다.curl --compressed URL
-o 경로에 없는 디렉터리를 만든다.curl -o cache/api/data.json --create-dirs URL
리다이렉트와 연결
3xx 리다이렉트를 따라간다.curl -L URL
TCP 연결을 기다리는 최대 초.curl --connect-timeout 5 URL
요청 전체의 최대 초.curl --max-time 30 URL
TLS 인증서 검증을 건너뛴다.curl -k https://self-signed.test
일시적 오류를 최대 N번 재시도한다.curl --retry 3 URL
일시적 오류뿐 아니라 모든 오류에서 재시도한다.curl --retry 3 --retry-all-errors URL
연결을 IPv4 또는 IPv6로 강제한다.curl -4 URL
호스트와 포트를 주소에 매핑해 DNS를 우회한다.curl --resolve api.test:443:127.0.0.1 https://api.test
전송을 네트워크 인터페이스나 주소에 바인딩한다.curl --interface eth0 URL
여러 URL을 동시에 전송한다.curl -Z URL1 URL2
전송에 HTTP/2 또는 HTTP/3을 사용한다.curl --http3 URL
버퍼링 대신 본문이 도착하는 대로 스트리밍한다.curl -N URL
추가 플래그를 설정 파일에서 읽는다.curl -K flags.cfg URL
디버깅
요청-응답 주고받기 전체를 출력한다.curl -v URL
주고받은 모든 바이트를 헥스 덤프한다.curl --trace - URL