What is the HTTP "content-type" to use when returning a blob of bytes in response to a client's GET request?
In this case, the information payload is an object serialized using Python's Pickle library.
What is the HTTP "content-type" to use when returning a blob of bytes in response to a client's GET request?
In this case, the information payload is an object serialized using Python's Pickle library.
You should use application/octet-stream
.
You should use the proper MIME type:
application/python-pickle
This is the de-facto standard (this mean: it is not application/pickle or application/pickle-python).
RFC2046 states:
4.5.3. Other Application Subtypes It is expected that many other subtypes of "application" will be defined in the future. MIME implementations must at a minimum treat any unrecognized subtypes as being equivalent to "application/octet- stream".
So, to a non-pickle-aware system, the stream will look like any other octet-stream (you are not doing anything which will break existing apps), but to a pickle-aware system this is vital information.
To pass a bytes object from Angular to Django, removing the content-type
from headers works as well, i.e.
const httpOptions = {headers: new HttpHeaders({})}
const formData = new FormData();
formData.append('file', file);
this.http.post(myAPI(), formData, httpOptions).subscribe(
where file
is a bytes object e.g. a (pickle) file uploaded by user.
Using application/octet-stream
might throw a 415 Unsupported media Type in http.post Angular request
error.