Unquote and unescape Content-Type: charset [RFC7230]
Nessuno ha ancora preso questa issue.
- Lingua principale
- Ruby
- Stelle
- 148
- Fork
- 95
- Merge medio
- 10h 54m
- PR unite (30g)
- 4
Descrizione
uri = URI('http://127.0.0.1:8080')
http = Net::HTTP.new(uri.hostname, uri.port)
http.response_body_encoding = true
http.send_request('GET', uri.request_uri)
/opt/homebrew/lib/ruby/gems/4.0.0/gems/net-http-0.9.1/lib/net/http/response.rb:381:in 'String#force_encoding': unknown encoding name - "UTF-8" (ArgumentError)
@body.force_encoding(enc) if enc
from /opt/homebrew/lib/ruby/gems/4.0.0/gems/net-http-0.9.1/lib/net/http/response.rb:381:in 'Net::HTTPResponse#read_body'
$ curl -I http://127.0.0.1:8080/
Content-Type: text/html; charset="UTF-8"
Server: WEBrick/1.9.2 (Ruby/4.0.1/2026-01-13)
$ open https://www.rfc-editor.org/rfc/rfc7230#section-3.2.6
[3.2.6](https://www.rfc-editor.org/rfc/rfc7230#section-3.2.6). Field Value Components
quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE
$ git diff
diff --git a/lib/net/http/header.rb b/lib/net/http/header.rb
index 797a3be..fe026ae 100644
--- a/lib/net/http/header.rb
+++ b/lib/net/http/header.rb
@@ -762,3 +762,3 @@ module Net::HTTPHeader
k, v = *param.split('=', 2)
- result[k.strip] = v.strip
+ result[k.strip] = v.strip.gsub(/\A"(.*?)(?<!\\)"\z/) { $1.gsub(/\\(.)/, '\1') }.strip
end
http.send_request('GET', uri.request_uri)
# #<Net::HTTPOK 200 OK readbody=true>
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia in lib/net/http/header.rb, nel codice di analisi dei parametri mostrato nell’issue, quindi esegui la riproduzione Net::HTTP fornita su una risposta con un charset tra virgolette. Verifica che i parametri Content-Type tra virgolette e con caratteri di escape producano un nome di encoding valido e che la request venga completata correttamente; aggiungi una copertura di regressione se i test esistenti del repository forniscono una posizione adatta.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- ruby
- Ambito
- networking
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Attiva
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 83/100