Bug 188586

Summary: [Cocoa] HEAD request should behave as same as GET request for Content-Length header.
Product: WebKit Reporter: Basuke Suzuki <Basuke.Suzuki>
Component: PlatformAssignee: Basuke Suzuki <Basuke.Suzuki>
Status: NEW ---    
Severity: Normal CC: achristensen, ap, Basuke.Suzuki, rbuis, webkit-bug-importer, youennf
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Description Basuke Suzuki 2018-08-14 16:07:08 PDT
In the http/tests/xmlhttprequest/methods.html test, 

GET request doesn't send Content-Length field. The test log of 'GET(null bytes)' indicates no Content-Length header is sent.

> GET(""): GET(null bytes), Content-Type: null
> GET(null): GET(null bytes), Content-Type: null
> GET("123"): GET(null bytes), Content-Type: null

But http/tests/xmlhttprequest/methods-expected.txt, HEAD seems sending Content-Length header with value of 0.

> HEAD(""): HEAD(0 bytes), Content-Type: null
> HEAD(null): HEAD(0 bytes), Content-Type: null
> HEAD("123"): HEAD(0 bytes), Content-Type: null

As specification defined, HEAD should be as close identical as GET request.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD
"The HTTP HEAD method requests the headers that are returned if the specified resource would be requested with an HTTP GET method"

Soup and Curl returns (null bytes) which is same with GET requests.
Comment 1 Rob Buis 2020-05-17 23:36:58 PDT
It would be nice to have HEAD behave as GET here, in order to pass more WPT tests and align with other platforms (like gtk). However this seems like CFNetwork behavior and maybe not necessarily a WebKit bug?
Comment 2 youenn fablet 2020-05-18 00:02:08 PDT
<rdar://problem/56144949>