Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Http: a bodyless GET is sent with Content-Type: text/plain, and with no User-Agent (GitHub's API answers 403)

Fermée
#531 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Une pull request liée a déjà été fusionnée.

  • #534 par @lukewilliamboswell — fusionnée

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
57/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
rust
Domaine
api, backend

Piste de recherche

Start by locating Http.send! and send_streaming!, then trace how they add default headers when building a request. Check the HTTP tests for bodyless GET requests and requests with a caller supplied User-Agent. Done means the defaults match the intended behavior for both cases, with tests covering each.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Two default headers surprised me while porting a tool to 0.26.0-rc3:

1. A bodyless GET is sent with Content-Type: text/plain. send_streaming! adds Content-Type: text/plain to any request that does not set one, even when there is no body. What Http.send! sends for Request.from_method(GET).with_uri("http://127.0.0.1:18099/x"), captured with nc -l -p 18099:

GET /x HTTP/1.1
content-type: text/plain
host: 127.0.0.1:18099

A Content-Type describes content, and this request has none. Servers mostly ignore it, but a strict one can refuse it, and it is a header the caller never asked for. Suggestion: add the default only when the body is not empty, or not at all.

2. No User-Agent. GitHub's REST API refuses requests without one:

api = Http.send!(Request.from_method(GET).with_uri("https://api.github.com/repos/roc-lang/basic-cli/branches/main"), {})?
# Response.status(api) == 403

With .add_header("User-Agent", "something") it answers 200. curl, Go's net/http and Python's urllib each send one by default. GitHub is probably the most common API a CLI script talks to, and a 403 with a body about a missing User-Agent is easy to miss. Suggestion: a default such as roc-basic-cli/0.26, replaced by any User-Agent the request sets. Or a line in Http's docs, if a default is not wanted.

Seen on 0.26.0-rc3, Roc nightly-2026-10-17-5f126ac and -10-19, Linux x86_64. Thank you for rc3: details on how it went for us are in #529.

Langage dominant
Rust
Étoiles
122
Forks
47
Merge moyen
10 h 59 min
PR mergées (30 j)
21

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de roc-lang/basic-cli

Toutes les issues de roc-lang/basic-cli

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.