#30059: DELETE request with payload makes subsequent request fail -----------------------------------------+------------------------ Reporter: diurchenko | Owner: nobody Type: Uncategorized | Status: new Component: Uncategorized | Version: 2.1 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 | -----------------------------------------+------------------------ In my application I use a frontend component FilePond (https://pqina.nl/filepond/) to perform photo file uploads. FilePond uses its own server protocol to manage temp files on the backend and sends a photo ID as a payload for DELETE request. According to RFC7231: "payload within a DELETE request message has no defined semantics", but it isn't forbidden. Django development server can't process a request that follows DELETE with payload as it regards the payload to be a part of the next request's first line. For example when photo ID is '0', next request is logged like this: {{{ "0POST /accounts/profile/photo/ HTTP/1.1" 405 0 }}} Quick and dirty fix for my View subclass is: {{{ def delete(self, request): # Drain the incoming buffer request._stream.read() ... return HttpResponse(status=204) }}} When incoming data are wholly consumed by DELETE handler, subsequent requests work as expected.
Best regards, Dmytro Yurchenko -- Ticket URL: <https://code.djangoproject.com/ticket/30059> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/053.dcec4e4828ef2998117bc7c12994c509%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.