401의 경우 wget을 사용하여 http 서버 응답을 얻는 방법은 무엇입니까?

401의 경우 wget을 사용하여 http 서버 응답을 얻는 방법은 무엇입니까?

인증이 실패하더라도 다양한 상황에서 http 서버 응답을 테스트해야 합니다. 인증이 실패하면 내 서버는 단순히 포함된 (또는 다른 자세한 메시지) 401 Unauthorized응답 본문을 반환합니다.Unauthorized

예를 들어 curl또는 을 사용하면 httpie응답의 응답 본문을 얻습니다 401.

$ curl http://10.5.1.1/bla 
Unauthorized
$ curl http://10.5.1.1/bla --digest --user joe:wrong 
Unauthorized
$ http http://10.5.1.1/bla -b
Unauthorized
$ http http://10.5.1.1/bla -b --auth-type digest --auth joe:wrong
Unauthorized

그러나 wget을 사용하여 이것을 시도하면 출력이 나오지 않습니다.

$ wget http://10.5.1.1/bla -q -O /dev/stdout
$ wget http://10.5.1.1/bla -q -O /dev/stdout --user joe --password wrong

이 경우 wget은 종료 코드 6을 반환하지만 응답 메시지를 확인해야 합니다.

다음은 httpie를 사용하여 캡처한 전체 트래픽 덤프입니다.

$ http http://10.5.1.1/bla --print hbHB
GET /bla HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: 10.5.1.1
User-Agent: HTTPie/0.9.2

HTTP/1.1 401 Unauthorized
Connection: keep-alive
Content-Length: 13
Content-Type: text/plain
Date: 2017-08-27 23:01:07
Server: Vistra-I St10 SW218 HW010
WWW-Authenticate: Digest realm="Vistra-I", qop="auth", nonce="a0c5d461f2b74b2b797b62f54200d125", opaque="0123456789abcdef0123456789abcdef"

Unauthorized

( Unauthorized응답 본문의 메시지는 줄 바꿈으로 끝나므로 Content-Length: 13입니다.)

403서버가 응답하는 경우 에도 마찬가지입니다 404. wget이 경우 응답 본문을 사용하는 방법을 아시나요 ?

2017-09-22 편집

--content-on-error내 wget 1.17.1에서 옵션을 찾았습니다.wget 매뉴얼).

예를 들어 응답 코드의 경우에는 작동 하지만 OR 코드 404에서는 작동하지 않습니다 .4015xx

401참고 로이 오류.

답변1

다음 명령을 사용하면 404오류가 발생할 때 서버 응답을 얻을 수 있습니다 503.wget 1.20.1

wget --no-verbose --save-headers --content-on-error=on --timeout=3 --tries=1 -O- http://127.0.0.1:8080/bla

출력 예:

HTTP/1.1 404 Not Found
X-Endpoint-Path: GET /bla
X-Sub-Calls-Count: 0
X-Mdc: XNIO-1 task-11550846786294
X-Child-Calls-Count: 0
X-Hop: 1
Date: Fri, 22 Feb 2019 14:46:26 GMT
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json;charset=UTF-8

{"id":"266a8c43-81ae-4b73-bb0c-d3e0a37a11c4","createdAt":1550846786327,"httpCode":404,"code":"RESOURCE_NOT_FOUND","message":"RESTEASY003210: Could not find resource for full path: http://127.0.0.1:8080/bla"}http://127.0.0.1:8080/bla:
2019-02-22 15:46:26 ERROR 404: Not Found.

답변2

wget응답 헤더는 다음 옵션을 사용하여 검색할 수 있습니다.

wget --server-response http://10.5.1.1/bla 

오류가 발생했을 때 응답 본문을 검색할 수 있는 optino가 있는지 모르겠습니다.wget

다른 명령의 응답 본문을 사용하려면 curl그대로 사용하세요.

curl http://10.5.1.1/bla

답변3

내 경우에는 "403 Forbidden"의 경우 다른 답변과 같이 사용해야 했지만 --content-on-error어떤 이유로 -q.

wget -q --content-on-error -O- http://...

관련 정보