From 9b6099ca872fb07a1dfaa15fc1b61a250044d0cd Mon Sep 17 00:00:00 2001 From: "Arthur A. Gleckler" Date: Thu, 18 Nov 2021 21:59:53 -0800 Subject: [PATCH] Support more MIME types for common file types. In `servlet-respond', the server defaults to Content-Type "text/html; charset=UTF-8" for extensions that don't appear in `mime-type-from-extension'. This meant that CSS files, JavaScript files, and various types of image files were getting the wrong Content-Type, which was fine when they were served directly, but caused clients to close the connection when they were loaded over HTTP/1.1, which can deliver back-to-back resources on the same connection. Sort the types in the `mime-type-from-extension' list now that it is longer. It's still not long enough for the order to be material for performance. --- lib/chibi/mime.scm | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/chibi/mime.scm b/lib/chibi/mime.scm index a782aac4..6ec01196 100644 --- a/lib/chibi/mime.scm +++ b/lib/chibi/mime.scm @@ -24,15 +24,25 @@ ;; most of these are plain text for easier viewing in the browser (define (mime-type-from-extension ext) (assq-ref - '((htm . "text/html; charset=utf-8") + '((c . "text/plain; charset=utf-8") + (css . "text/css; charset=utf-8") + (gif . "image/gif") + (h . "text/plain; charset=utf-8") + (htm . "text/html; charset=utf-8") (html . "text/html; charset=utf-8") + (jpeg . "image/jpeg") + (jpg . "image/jpeg") + (js . "application/javascript; charset=utf-8") + (json . "application/json; charset=utf-8") + (md . "text/plain; charset=utf-8") + (mp3 . "audio/mpeg") + (org . "text/plain; charset=utf-8") + (pdf . "application/pdf") + (png . "image/png") (scm . "text/plain; charset=utf-8") (sld . "text/plain; charset=utf-8") - (c . "text/plain; charset=utf-8") - (h . "text/plain; charset=utf-8") - (txt . "text/plain; charset=utf-8") - (org . "text/plain; charset=utf-8") - (md . "text/plain; charset=utf-8")) + (svg . "image/svg+xml") + (txt . "text/plain; charset=utf-8")) (and (string? ext) (string->symbol ext)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;