#5397 closed defect (fixed)
API client registration fails if Content-Type has options
Reported by: | Ben Sturmfels | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | 0.9.0 |
Component: | programming | Keywords: | |
Cc: | Parent Tickets: |
Description
I was just playing with the client registration API and noticed that the following valid request fails. The client I'm using is from the httpie package.
http --form --verbose POST http://127.0.0.1:6543/api/client/register type=client_associate application_type=native POST /api/client/register HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate, compress Content-Length: 45 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Host: 127.0.0.1:6543 User-Agent: HTTPie/0.8.0 type=client_associate&application_type=native HTTP/1.0 400 BAD REQUEST Access-Control-Allow-Headers: Content-Type, X-Requested-With Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Origin: * Content-Length: 33 Content-Type: application/json Date: Tue, 19 Jan 2016 12:31:30 GMT Server: PasteWSGIServer/0.5 Python/2.7.6 Set-Cookie: mediagoblin_csrftoken=12864927827420732302; HttpOnly; Path= Vary: Cookie { "error": "Unknown Content-Type" }
It should succeed like this:
HTTP/1.0 200 OK Access-Control-Allow-Headers: Content-Type, X-Requested-With Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Origin: * Content-Length: 120 Content-Type: application/json Date: Tue, 19 Jan 2016 12:32:00 GMT Server: PasteWSGIServer/0.5 Python/2.7.6 Set-Cookie: mediagoblin_csrftoken=726380659778734454; HttpOnly; Path= Vary: Cookie { "client_id": "F5lY7pUrmL9ytOjF3RW1md", "client_secret": "yAce42AR3a8SGUSiJDp4GbEaYB8xBQoktNU5ZjlpmWO", "expires_at": 0 }
This looks to be caused by the content-type parsing function not being aware of extra options like Content-Type: application/x-www-form-urlencoded; charset=utf-8
, since the simpler case works Content-Type: application/x-www-form-urlencoded
.
Attaching a patch including tests for the current code paths plus one with header options.
Attachments (1)
Change History (5)
by , 9 years ago
Attachment: | issue_5397.patch added |
---|
comment:1 by , 9 years ago
Owner: | removed |
---|---|
Status: | new → review |
comment:2 by , 9 years ago
comment:3 by , 9 years ago
Milestone: | → 0.8.2 |
---|---|
Resolution: | → fixed |
Status: | review → closed |
This makes sense, and that werkzeug utility looks useful. I've applied the patch and pushed it. Thank you!
comment:4 by , 9 years ago
Milestone: | 0.8.2 → 0.9.0 |
---|
All 0.8.2 tickets are being rolled over to 0.9.0
Hi Sturm,
It appears that you're running MediaGoblin using the builtin "lazyserver" in this case. Is that correct? If so, does the same problem still occur when running via a "real" web server?