WGET가 HTTP 100- 컨티인 링 응답을 처리하는 방법은 무엇입니까?
문제
HTML (파일에 포함)을 사용하여 URL에 게시하려고합니다. wget 이와 같이:
wget -O- --debug
--header=Content-Type:text/html
--post-file=index.html
http://localhost/www/encoder.ashx
HTML이 게시되는 URL은 ASP.NET을 사용하여 구현 된 웹 응용 프로그램 엔드 포인트입니다. 서버는 a로 응답합니다 100 (계속) 응답과 wget은 단순히 진짜 그 반응 ~해야 한다 다음을 따르십시오.
wget은 어떻게 든 100 (계속) 응답을하라고 말할 수 있습니까? 아니면 이것이 도구의 잘 알려진 한계입니까?
메모:
나는 wget이 절대 보내지 않는다는 것을 알았다
Expect: 100-Continue
헤더는 기술적으로 서버가 100 (계속) 응답을 발행해서는 안됩니다.업데이트: 이것은 가능하다고 생각합니다 §8.2.3 의 RFC 2616 (하이퍼 텍스트 전송 프로토콜 -HTTP/1.1):
요청 메시지에 "100-continue"기대치가 포함 된 기대 요청 헤더 필드가 포함되어 있지 않으면 Origin Server는 100 (계속) 응답을 보내지 않아야하며, 그러한 요청이 온 경우 100 (계속) 응답을 보내지 않아야합니다. HTTP/1.0 (또는 이전) 클라이언트. 이 규칙에는 예외가 있습니다. RFC 2068과의 호환성. 서버는 "100- 계속 된"기대치가 포함 된 기대 요청 헤더 필드가 포함되지 않는 HTTP/1.1 PUT 또는 POST 요청에 대한 응답으로 100 (계속) 상태를 보낼 수 있습니다. 이 예외는 100 (계속) 상태에 대한 선언 대기 대기와 관련된 클라이언트 처리 지연을 최소화하는이 예외는 HTTP/1.1 요청에만 적용되며 다른 HTTP 버전 값과의 요청이 아닙니다.
곱슬 곱슬하다 그러한 거래에 문제가 없습니다. 그것은 an을 보냅니다
Expect: 100-Continue
헤더 및 실제 응답에 대한 100 (계속) 응답으로 계속했습니다.
자세한 내용은 다음은 위에 표시된 호출에서 트랜잭션의 전체 디버그 추적입니다.
Setting --post-file (postfile) to index.html
Setting --header (header) to Content-Type:text/html
DEBUG output created by Wget 1.10 on Windows.
--13:29:17-- http://localhost/www/encoder.ashx
=> `-'
Resolving localhost... seconds 0.00, 127.0.0.1
Caching localhost => 127.0.0.1
Connecting to localhost|127.0.0.1|:80... seconds 0.00, connected.
Created socket 296.
Releasing 0x01621a10 (new refcount 1).
---request begin---
POST /www/encoder.ashx HTTP/1.0
User-Agent: Wget/1.10
Accept: */*
Host: localhost
Connection: Keep-Alive
Content-Type: text/html
Content-Length: 30984
---request end---
[writing POST file index.html ... done]
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 100 Continue
Server: ASP.NET Development Server/9.0.0.0
Date: Wed, 24 Sep 2008 11:29:17 GMT
Content-Length: 0
---response end---
100 Continue
Closed fd 296
13:29:17 ERROR 100: Continue.
해결책
Windows 용 WGET 소스 코드를 살펴 보았습니다. WGET가 응답을 제대로 구문 분석하지 못하면 디버그 출력이 일반 오류 조건에서 나온다고 알 수 있습니다. 이것은 WGET의 제한 일 뿐이 므로이 문제를 피하기 위해 CURL 또는 다른 방법을 사용해야 할 것입니다.