2016-08-31 1 views
2

특히 Content-Length. 내 로컬 서버에 HEAD 요청을 보낼 때, 나는 항상 요청한 파일의 크기를받지 못합니다. 예를 들어
, 그것은 159 바이트의 index.php 때 :HTTP 서버가 libcurl을 통해 특정 헤더를 보내도록 강제 할 수 있습니까?

HTTP/1.1 200 OK 
Date: Wed, 31 Aug 2016 11:34:16 GMT 
Server: Apache/2.4.17 (Win32) OpenSSL/1.0.2d PHP/5.6.20 
X-Powered-By: PHP/5.6.20 
Content-Type: text/html; charset=UTF-8 

그리고 40 일 MB 임의 .pdf 파일 :

HTTP/1.1 200 OK 
Date: Wed, 31 Aug 2016 11:34:23 GMT 
Server: Apache/2.4.17 (Win32) OpenSSL/1.0.2d PHP/5.6.20 
Last-Modified: Thu, 25 Aug 2016 11:19:59 GMT 
ETag: "2807fb2-53ae39413d130" 
Accept-Ranges: bytes 
Content-Length: 41975730 
Content-Type: application/pdf 

내가 강제 여부를 수 있습니까?

+0

'Content-length'은 길이가 알려진 경우 'HTTP/1.1'의 필수 헤더 필드입니다. 당신이받을 수 없다면,'HEAD' 요청이 페이로드 (내용 없음) 또는 알려지지 않은 응답을 요구하기 때문이며,이 경우'Content-disposition : chunked' (don ' t 이것이 정확하게 보여지는지를 안다면, rfc를 확인하라.) 그래서 HEAD 응답의 경우'Content-length'는 0이어야하고 포함되지 않는다. –

답변

3

아니요, 할 수 없습니다. 크기가 사용 가능하거나 그렇지 않습니다.

특히 PHP 스크립트의 경우 콘텐츠가 동적으로 생성되며 미리 크기를 알 수 없습니다.

기본적으로 HEADGET과 동일하지만 페이로드는 생략합니다.

+0

그러면 PHP가 컨텐츠를 생성 한 후 서버가 컨텐츠 길이 헤더를 생성하지 않습니까? –

+0

@KarashevichB. 내용이 버퍼링되지 않기 때문에 (다시 말해, 크기가 알려지지 않았기 때문에). 대신, 즉시 회선을 통해 전송되므로 추가 헤더를 추가 할 수 없습니다. – glglgl

+0

'Content-length :'는 알려진 경우에는 필수이고'HTTP/1.1'에서는 알 수 없을 때 청크 처리를합니다. 모르는 경우'content-disposition : chunked'를 사용하거나'HTTP/1.0'으로 전환해야합니다. –

관련 문제