Skip to content

Handling missing mime types gracefully #534

@jake-arkinstall

Description

@jake-arkinstall

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.,

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/csv without 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.

Metadata

Metadata

Labels

featureCode based project improvementgood first issuean issue suitable to start contributing to the project

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions