컬을 사용하여 POST하거나 파일을 URL에 PUT하는 경우 파일 콘텐츠를 로드하는 두 가지 방법이 있습니다.
-T ${file_path}
--data-binary @${file_path}
또는-d $@{file_path}
(ASCII 데이터 파일의 경우)
이 두 가지 옵션의 차이점은 무엇입니까?
답변1
이러한 옵션 간의 차이점을 이해하려면 다음을 읽어보세요.매뉴얼 페이지아니면 몇 가지 실험을 해보세요.
매뉴얼 페이지
-d, --데이터
지정된 데이터를 다음으로 보냅니다.우편 엽서사용자가 HTML 양식을 작성하고 제출 버튼을 누를 때 브라우저가 요청하는 것과 마찬가지로 HTTP 서버에 요청합니다. 이렇게 하면 컬이 다음을 사용하여 데이터를 서버에 전달하게 됩니다.콘텐츠 유형 애플리케이션/x-www-form-urlencoded. [...]
-T, --파일 업로드
그러면 지정된 로컬 파일이 원격 URL로 전송됩니다. [...] HTTP(S) 서버에서 사용되는 경우놓다명령이 사용됩니다. [...]
몇 가지 실험을 해보세요
듣기 모드에서 netcat(macOS 버전)을 실행합니다.
nc -l localhost 8989
테스트 파일 생성:
echo test>test
컬 명령을 실행하고 청취 측에서 결과를 확인하십시오.
% curl -d "name=test" localhost:8989
POST / HTTP/1.1
Host: localhost:8989
User-Agent: curl/7.84.0
Accept: */*
Content-Length: 9
Content-Type: application/x-www-form-urlencoded
name=test
% curl -T test localhost:8989
PUT /test HTTP/1.1
Host: localhost:8989
User-Agent: curl/7.84.0
Accept: */*
Content-Length: 5
Expect: 100-continue
test
귀하의 질문에 답하기 위해 이 -d
옵션은 x-www-form-urlencoded 형식의 데이터를 전송하여 POST 요청을 만들고 -T
데이터 형식을 지정하지 않고 PUT 요청을 보냅니다.