-
-
Notifications
You must be signed in to change notification settings - Fork 509
Description
If a key isn't present in the mime_types map, an exception is thrown. This is because mime_types.at() is used at, e.g.,
Crow/include/crow/http_response.h
Line 104 in c0bfaa7
| set_header("Content-Type", mime_types.at(contentType)); |
I propose that the resolution is to search for the provided mime_type within the map using mime_types.find. If it is not found, a warning should be logged, but the content should still be delivered using the following logic:
-
Does the provided type look like a MIME type already? I.e. is it one of the IANA-registered types (application, audio, example, font, image, model, text, video), followed by a slash, followed by text? If so, send that verbatim.
-
Otherwise send text/plain.
Although this approach isn't quite as lightweight as simply sending text/plain, there are some benefits:
- I'd be able, for example, to send content as
text/csvwithout modifying the mime types map. - It would also allow people to use the full mime-type format, including parameters (e.g.
text/plain;charset=UTF-8) - Developers coming from other technologies that use full mime types won't be faced with an internal server error for following an old habit.