문제

IIS 웹 서버에 HTTP를 연결하고 전송 인코딩 : Chunked를 사용하여 인코딩 된 데이터와 함께 게시물 요청을 보냅니다. 이 작업을 수행하면 IIS는 오류 메시지 나 상태 코드없이 연결을 닫습니다. 에 따르면 HTTP 1.1 사양,

모든 HTTP/1.1 응용 프로그램은 "청크"전송 코딩을 수신하고 디코딩 할 수 있어야합니다.

그래서 나는 그것이 왜 (a) 인코딩을 처리하지 않고 (b) 상태 코드를 다시 보내지 않는 이유를 이해하지 못합니다. 전송 인코딩 대신 컨텐츠 길이를 전송하라는 요청을 변경하면 쿼리가 성공하지만 항상 가능하지는 않습니다.

Apache에 대해 똑같은 일을 시도하면 "411 길이 요구"상태와 "청크 전송 인코딩 금지"라는 메시지가 표시됩니다.

이 서버 가이 인코딩을 지원하지 않는 이유는 무엇입니까?

도움이 되었습니까?

해결책

내 이해는 청크 인코딩이 HTTP 응답으로 만 사용할 수 있다는 것입니다. 청크 요청 본문은 1.0 서버와 호환되지 않는 속성을 가지며 어쨌든 요청을 이미 보낼 때까지 서버가 1.0 서버임을 알면서 사용자 에이전트 할 방법이 없습니다.

그러나 나는 그것이 문서에서 불분명하다는 데 동의합니다.

다른 팁

고객을 살펴보십시오.

IIS & Apache 모두 청크 전송 인코딩을 사용한 게시물 요청을 지원합니다. 당신은 이것을 사용하여 이것을 확인할 수 있습니다 컬 유틸리티:

curl <upload-url> --form "upfile=@<local_file>" --header "Transfer-Encoding: chunked"

전송이 사용되는지 확인하십시오 Wireshark

그것은 두 가지 방법으로 간다. PhotoBucket에 이미지 2MB ++를 업로드하여 녹음하십시오. 업 로더는 Apache 서버에 덩어리를 업로드했습니다.

내 유일한 추측은 그들이 보안에 대한 우려에서 그것을 구현하지 않았다는 것입니다. 순진한 솔루션에서는 결코 끝나지 않는 여러 청크 전송을 시작하여 DOS 공격을 쉽게 설정할 수 있습니다. 그리고 DOS 공격을 설명 할 수있는 복잡한 솔루션은 아마도 노력의 가치가 없을 것입니다.

물론 Apache 또는 IIS에 대해서는 말할 수 없으며 Apache 팀에 직접 연락 할 수 있습니다. http://httpd.apache.org/bug_report.html

나는 항상 청크 인코딩이 응답으로 만 사용될 수 있다고 생각했다고 항상 동의하지만, 문서는 요청이나 응답에 사용될 수있는 것처럼 들립니다.

이 명령은 나를 위해 구출되었습니다!

c : windows system32 inetsrv appcmd.exe set config -section : httpcompression
-[name = 'gzip']. staticCompressionLevel : 9- [name = 'gzip']. DynamicCompressionLevel : 4

내 하루를 구했습니다 ... 나 같은 사람을 도와주기를 바랍니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top