Generation of multipart post fail if inconsistent encodings given as input
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Comience en lib/net/http/generic_request.rb, en encode_multipart_form_data, y reproduzca el ejemplo proporcionado de StringIO con UTF-8 y ASCII-8BIT mezclados. Siga el ensamblado multipart que provoca Encoding::CompatibilityError y, a continuación, verifique que se pueda generar y enviar una solicitud multipart que contenga entradas codificadas de forma diferente sin que se produzca ese error.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
When attaching multipart entities of different encodings it is easy to get failures due to intermediary strings inside encode_multipart_form_data that care about encoding despite there being no need to care about them.
Example:
require "net/http"
require "stringio"
utf_string = "räksmörgås"
ascii_string = "räkmacka"
ascii_string.force_encoding("ASCII-8BIT")
form_data = {
"foo" => "bar",
"utf8" => StringIO.new(utf_string),
"ascii" => StringIO.new(ascii_string)
}
url = URI("http://www.example.com")
request = Net::HTTP::Post.new(url)
request.set_form(form_data, "multipart/form-data")
Net::HTTP.start(url.hostname, url.port) do |http|
http.request(request)
end
This results in
net-http-0.4.1/lib/net/http/generic_request.rb:354:in `block in encode_multipart_form_data': incompatible character encodings: UTF-8 and ASCII-8BIT (Encoding::CompatibilityError)
from /home/linus/.gem/ruby/3.3.3/gems/net-http-0.4.1/lib/net/http/generic_request.rb:320:in `each'
from /home/linus/.gem/ruby/3.3.3/gems/net-http-0.4.1/lib/net/http/generic_request.rb:320:in `encode_multipart_form_data'
from /home/linus/.gem/ruby/3.3.3/gems/net-http-0.4.1/lib/net/http/generic_request.rb:303:in `send_request_with_body_data'
from /home/linus/.gem/ruby/3.3.3/gems/net-http-0.4.1/lib/net/http/generic_request.rb:204:in `exec'
[...]
There are real use cases that are reasonable like posting both a text file and a pdf at the same time.
A workaround is to always encode absolutely everything as ascii-8bit before posting it.
- Lenguaje dominante
- Ruby
- Estrellas
- 148
- Forks
- 95
- Merge medio
- 10 h 54 min
- PR fusionados (30 d)
- 4
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ruby/net-http
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
-
bug documentation
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Todos los issues de ruby/net-http
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
バグ
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
-
Version bump for OpenVox 9 Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
voxpupuli/puppet-epel#186 · 1 comentario ·
-
external_created_at is no longer used for the message timestamp since the new message UI (v4.4.0) AbiertoBug Frontend
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100