curl을 사용하여 http 헤더를 가져와 http 상태 코드를 찾고 응답도 반환합니다. 명령으로 http 헤더를 얻습니다.
curl -I http://localhost
응답을 얻으려면 다음 명령을 사용합니다.
curl http://localhost
-I 플래그를 사용하자마자 헤더 만 가져오고 응답은 더 이상 존재하지 않습니다. 하나의 명령으로 http 응답과 헤더 / http 상태 코드를 모두 얻는 방법이 있습니까?
답변
-
출력을 stdout으로 가져 오기 위해 사용하도록 지정하는 curl 문서를보고 솔루션을 얻을 수있었습니다 .
curl -o - http://localhost
http 반환 코드만으로 응답을 얻으려면 다음을 수행하십시오.
curl -o /dev/null -s -w "%{http_code}\n" http://localhost
답변
상세 모드는 모든 것을 알려줍니다.
curl -v http://localhost
답변
이 명령을 사용하여 다른 출력없이 상태 코드를 인쇄합니다. 또한 HEAD 요청 만 수행하고 리디렉션 (각각 -I
및 -L
)을 따릅니다 .
curl -o -I -L -s -w "%{http_code}" http://localhost
이렇게하면 상태 스크립트에서 상태 코드를 매우 쉽게 확인할 수 있습니다.
sh -c '[ $(curl -o -I -L -s -w "%{http_code}" http://localhost) -eq 200 ]'
답변
사용자에 대한 오류 처리를 추가하기 위해 응답과 내용을 모두 원했기 때문에이 질문을 찾았습니다.
HTTP 상태 코드를 인쇄하여 표준 출력하고 다른 파일에 내용을 쓸 수 있습니다.
curl -s -o response.txt -w "%{http_code}" http://example.com
이를 통해 논리를 사용하여 응답을 처리 할 가치가 있는지 결정할 수 있습니다.
http_response=$(curl -s -o response.txt -w "%{http_code}" http://example.com)
if [ $http_response != "200" ]; then
# handle error
else
echo "Server returned:"
cat response.txt
fi
답변
-i
옵션은 당신이 원하는 것을 하나입니다 :
curl -i http://localhost
-i, –include 출력에 프로토콜 헤더 포함 (H / F)
또는 verbose 옵션을 사용할 수 있습니다.
curl -v http://localhost
-v, –verbose 작업을 더 수다하게 만듭니다
답변
나는 이것을 사용했다 :
request_cmd="$(curl -i -o - --silent -X GET --header 'Accept: application/json' --header 'Authorization: _your_auth_code==' 'https://example.com')"
HTTP 상태를 얻으려면
http_status=$(echo "$request_cmd" | grep HTTP | awk '{print $2}')
echo $http_status
응답 본문을 얻으려면 이것을 사용했습니다.
output_response=$(echo "$request_cmd" | grep body)
echo $output_response
답변
이 명령
curl http://localhost -w ", %{http_code}"
쉼표로 구분 된 본문 및 상태를 가져옵니다. 당신은 그들을 분리하기 위해 그들을 나눌 수 있습니다.
원하는대로 구분 기호를 변경할 수 있습니다.