[Django] #31293: MultiPartParser support double quotes

42 views
Skip to first unread message

Django

unread,
Feb 21, 2020, 12:45:50 AM2/21/20
to django-...@googlegroups.com
#31293: MultiPartParser support double quotes
------------------------------------------------+------------------------
Reporter: 007 | Owner: nobody
Type: Cleanup/optimization | Status: new
Component: HTTP handling | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
------------------------------------------------+------------------------
Although the rfc2231 document does not indicate that values can be wrapped
in double quotes. However, some third-party tools wrap the value in double
quotation marks when wrapping HTTP requests (such as the filename of the
file uploaded by PostmanCanary). This results in double quotes for the
filename at the end of Django parsing.

Postman request body:
{{{
----------------------------677822685948106391633425
Content-Disposition: form-data; name="file"; filename="测试.txt";
filename*="UTF-8''%E6%B5%8B%E8%AF%95.txt"
Content-Type: text/plain

test
----------------------------677822685948106391633425--
}}}

django got filename is `测试.txt"` not `测试.txt`

This is not a bug of Django. But I suggest Django do some compatibility
processing.

CPython is also compatible with this situation.
[https://hg.python.org/cpython/file/default/Lib/test/test_email/test_headerregistry.py]


[https://github.com/django/django/pull/12485]

--
Ticket URL: <https://code.djangoproject.com/ticket/31293>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Feb 21, 2020, 1:05:16 AM2/21/20
to django-...@googlegroups.com
#31293: MultiPartParser support double quotes
-------------------------------------+-------------------------------------
Reporter: 007 | Owner: 007
Type: | Status: assigned
Cleanup/optimization |

Component: HTTP handling | Version: master
Severity: Normal | Resolution:

Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by 007):

* owner: nobody => 007
* status: new => assigned


--
Ticket URL: <https://code.djangoproject.com/ticket/31293#comment:1>

Django

unread,
Feb 24, 2020, 8:08:31 PM2/24/20
to django-...@googlegroups.com
#31293: MultiPartParser support double quotes
-------------------------------------+-------------------------------------
Reporter: 007 | Owner: 007
Type: | Status: assigned
Cleanup/optimization |
Component: HTTP handling | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by 007):

* has_patch: 0 => 1


--
Ticket URL: <https://code.djangoproject.com/ticket/31293#comment:2>

Django

unread,
Feb 25, 2020, 4:24:49 AM2/25/20
to django-...@googlegroups.com
#31293: MultiPartParser support double quotes
--------------------------------------+------------------------------------
Reporter: 007 | Owner: 007
Type: Cleanup/optimization | Status: assigned

Component: HTTP handling | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------
Changes (by Carlton Gibson):

* stage: Unreviewed => Accepted


Comment:

Thanks for the report. First glance at the PR looks reasonable.

--
Ticket URL: <https://code.djangoproject.com/ticket/31293#comment:3>

Django

unread,
Feb 27, 2020, 9:38:56 AM2/27/20
to django-...@googlegroups.com
#31293: MultiPartParser support double quotes
-------------------------------------+-------------------------------------
Reporter: 007 | Owner: 007
Type: | Status: assigned
Cleanup/optimization |

Component: HTTP handling | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Carlton Gibson):

* stage: Accepted => Ready for checkin


Comment:

PR looks correct. Thank you.

--
Ticket URL: <https://code.djangoproject.com/ticket/31293#comment:4>

Django

unread,
Feb 27, 2020, 9:46:38 AM2/27/20
to django-...@googlegroups.com
#31293: MultiPartParser support double quotes
--------------------------------------+------------------------------------
Reporter: 007 | Owner: 007
Type: Cleanup/optimization | Status: assigned

Component: HTTP handling | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+------------------------------------
Changes (by Carlton Gibson):

* stage: Ready for checkin => Accepted


Comment:

GitHub is momentarily dying on me. I have small edits to push. I will try
again later.

--
Ticket URL: <https://code.djangoproject.com/ticket/31293#comment:5>

Django

unread,
Feb 28, 2020, 5:34:41 AM2/28/20
to django-...@googlegroups.com
#31293: MultiPartParser support double quotes
-------------------------------------+-------------------------------------
Reporter: 007 | Owner: 007
Type: | Status: assigned
Cleanup/optimization |

Component: HTTP handling | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Carlton Gibson):

* stage: Accepted => Ready for checkin


--
Ticket URL: <https://code.djangoproject.com/ticket/31293#comment:6>

Django

unread,
Feb 28, 2020, 9:05:17 AM2/28/20
to django-...@googlegroups.com
#31293: MultiPartParser support double quotes
-------------------------------------+-------------------------------------
Reporter: 007 | Owner: 007
Type: | Status: closed
Cleanup/optimization |

Component: HTTP handling | Version: master
Severity: Normal | Resolution: fixed

Keywords: | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak <felisiak.mariusz@…>):

* status: assigned => closed
* resolution: => fixed


Comment:

In [changeset:"e65fea9292ffdeb9bb76062f6cb2a5ff514ae969" e65fea92]:
{{{
#!CommitTicketReference repository=""
revision="e65fea9292ffdeb9bb76062f6cb2a5ff514ae969"
Fixed #31293 -- Allowed MultiPartParser to handle double-quoted encoded
headers.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/31293#comment:7>

Reply all
Reply to author
Forward
0 new messages