Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Blob endpoint returns 406 for an empty Accept header

Open Beginner friendly
#2,544 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@am9zZWY is already working on this.

Since Oct 7, 2026.

  • #2545 by @am9zZWY — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
72/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
python
Domain
api

Research direction

Search the codebase for the error string "Could not satisfy the request Accept header" to find where content negotiation runs for blob requests (pulp_container's registry views/handlers). Start from the blob endpoint's Accept parsing and confirm how an empty header value differs from an absent one. Done means an empty Accept is treated like a missing header so the blob redirect is served, verified with a regression test that sends an explicitly empty Accept header.

Written by the indexing model from the issue text.

Description

Issue Triage-Needed
406 Not Acceptable
{"errors":[{"code":"UNSUPPORTED","message":"Could not satisfy the request Accept header.","detail":{}}]}

The failure can be reproduced by requesting a valid configuration blob with an explicitly empty Accept header:

Requesting a token:

TOKEN=$(curl -fsS \
  'https://pulp.example.com/token/?service=pulp.breuni.io&scope=repository:docker/library/eclipse-temurin:pull' \
  | jq -r '.token')

Fetching the blob

curl -i -H "Authorization: Bearer $TOKEN" -H 'Accept;' \
  'https://pulp.example.com/v2/docker/library/eclipse-temurin/blobs/sha256:6779cc3e4a680ad633e699feadcffe9ee38f7c7e9812a9a1187efb64ac77c8c5'

Response:

HTTP/1.1 406 Not Acceptable
server: gunicorn
date: Wed, 07 Oct 2026 14:37:27 GMT
content-type: application/json
allow: GET, DELETE, HEAD, OPTIONS
docker-distribution-api-version: registry/2.0
x-registry-supports-signatures: 1
x-frame-options: DENY
content-length: 104
x-content-type-options: nosniff
referrer-policy: same-origin
cross-origin-opener-policy: same-origin
correlation-id: 15d5ce5a21834f6db87af17a671d456d
access-control-expose-headers: Correlation-ID

{"errors":[{"code":"UNSUPPORTED","message":"Could not satisfy the request Accept header.","detail":{}}]}

Actual: Pulp returns 406.

Expected: Pulp serves the blob, treating the empty header like a missing header.

Omitting Accept or setting it to */* returns a redirect, and the blob downloads successfully. Docker Hub serves the same blob successfully. We have not yet confirmed the exact header sent by Jib

Dominant language
Python
Stars
31
Forks
57
Avg merge
1d 3h
Merged PRs (30d)
42

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from pulp/pulp_container

All issues in pulp/pulp_container

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.