Skip header area?
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 48/100
Piste de recherche
Commencez par MultipartParser._internal_write et reproduisez l’entrée signalée générée par email.mime.multipart.MIMEMultipart et as_string(). Suivez la manière dont le parser traite l’en-tête MIME-Version initial et la limite CRLFCRLF, puis vérifiez que les payloads multipart contenant cette zone d’en-tête sont acceptés sans perturber les uploads de type navigateur.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
RFC 1341 says about multipart payloads:
This [the multipart content-type] indicates that the entity consists of several parts, each itself with a structure that is syntactically identical to an RFC 822 message, except that the header area might be completely empty...
I read that as: "a multipart payload may have a header area". As a matter of fact, when you construct a multipart payload using email.mime.multipart.MIMEMultipart and then calling as_string(), you get:
MIME-Version: 1.0
Content-Type: multipart/form-data; boundary="========== bounda r y 930"
--========== bounda r y 930\nMIME-Version: 1.0
Content-Type: application/octet-stream
...
The multipart parser from the old cgi module would correctly grok that when I uploaded it (provided I arranged for the content-type to be in the HTTP header). python-multipart (tried 0.0.5) does not and fails when it sees the M of the MIME-Version.
I appreciate the "as browsers send it" part of multipart's rationale; however, being somewhat friendly to machine-generated multipart messages would, I think, be a friendly gesture, and it might prevent breakage as people move from cgi's FieldStorage (used, e.g., in twisted) to python-multipart.
What I think should be done: in MultipartParser's _internal_write, we should blindly skip everything until the MIME header area is consumed, i.e., until we have found a CRLFCRLF sequence. Would you consider such a PR?
- Langage dominant
- Python
- Étoiles
- 537
- Forks
- 108
- Merge moyen
- 6 j 17 h
- PR mergées (30 j)
- 16
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Kludex/python-multipart
-
Clarify or handle non-Latin-1 str input in parse_options_headerPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
Kludex/python-multipart#319 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de Kludex/python-multipart
Issues similaires
-
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
aws-samples/sample-per-model-bedrock#782 ·
Les mainteneurs répondent en général sous 1 jour
-
Google text documents are base64-encoded twicePeut-être pris @feiiiiii5 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
coveragepy/coveragepy#2364 ·
Les mainteneurs répondent en général sous 1 jour
-
[Plugin] astrbot_plugin_sd_drawOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100