Skip to content

Content type not set on request #823

@tomekowal

Description

@tomekowal

Hi!

I've found an incosistency between 1.25.0 and 3.0.1 that is not covered in the migration guide.
I have the following code:

method = :post
url = "http://localhost:5080/post"
headers = []
body = String.duplicate("response long", 1000)
opts = [with_body: true, max_body: 100]

:hackney.request(method, url, headers, body, opts)

hitting httparrot

In 1.25.0 it fills default content-type to be "application/octet-stream"

:ok, 200,
 [
   {"content-length", "13223"},
   {"content-type", "application/json"},
   {"date", "Sun, 01 Feb 2026 15:03:37 GMT"},
   {"server", "Cowboy"}
 ],
 "{\"args\":{},\"headers\":{\"content-length\":\"13000\",\"content-type\":\"application/octet-stream\",\"host\":\"localhost:5080\",\"user-agent\":\"hackney/1.24.1\"},\"url\":\"http://localhost:5080/post\",\"origin\":\"\",\"form\":{},\"data\":\"response longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longresponse longrespon"}

In 3.0.1 I get:

{:ok, 415,
 [
   {"content-length", "0"},
   {"date", "Sun, 01 Feb 2026 15:11:42 GMT"},
   {"server", "Cowboy"}
 ], ""}

mainly because the default {"content-type", "application/octet-stream"}. Is that an intentional change that should be part of the migration guide or is it accidental and will be fixed in future versions?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions