Skip to content

fix: ensure Content-Type is set when sending JSON with custom headers#1840

Closed
zafar1162014 wants to merge 1 commit intohttpie:masterfrom
zafar1162014:fix/content-type-with-headers
Closed

fix: ensure Content-Type is set when sending JSON with custom headers#1840
zafar1162014 wants to merge 1 commit intohttpie:masterfrom
zafar1162014:fix/content-type-with-headers

Conversation

@zafar1162014
Copy link
Copy Markdown

When custom headers are provided alongside JSON data, the Content-Type header should still be set to application/json. Previously, if only a single custom header was provided, the Content-Type was not being set, causing issues with some API gateways that auto-encode request bodies when Content-Type is missing.

Fixes #1834

When custom headers are provided alongside JSON data, the Content-Type
header should still be set to application/json. Previously, if only a
single custom header was provided, the Content-Type was not being set,
causing issues with some API gateways that auto-encode request bodies
when Content-Type is missing.

Fixes #1834
Copilot AI review requested due to automatic review settings May 3, 2026 20:32
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR aims to fix HTTPie’s JSON request header handling so Content-Type: application/json is preserved when users send JSON data together with custom headers, addressing issue #1834 around API gateways mis-handling bodies when the header is missing.

Changes:

  • Updates request header construction in make_request_kwargs() to explicitly set Content-Type for auto-JSON requests after merging base and user-provided headers.
  • Adds inline documentation referencing the reported regression and intended behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread httpie/client.py
Comment on lines +347 to +352
# Ensure Content-Type is set for JSON requests even if user headers
# were provided. This fixes the case where a single custom header
# prevents the default Content-Type from being preserved.
# See: https://github.com/httpie/cli/issues/1834
if auto_json and 'Content-Type' not in headers:
headers['Content-Type'] = JSON_CONTENT_TYPE
Comment thread httpie/client.py
@zafar1162014 zafar1162014 marked this pull request as draft May 3, 2026 20:37
@zafar1162014 zafar1162014 marked this pull request as ready for review May 3, 2026 20:37
@zafar1162014 zafar1162014 closed this by deleting the head repository May 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

JSON content type not being set when a single header is present

2 participants