[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [MirageOS-devel] Web server MIME types / content types
Hi Andrew, It looks like Cohttp will respond with content-type, but only when using Cohttp_lwt_unix.respond_file [1]. That's a convenience function for serving a file from the local filesystem, which assumes too much for a unikernel environment (hence it is in the _unix module). Assuming you are using something like mirage-skeleton/static_website, you can add the content-type bits to your dispatch function [2]. After read_fs returns the content data, feed the vpath to magic-mime to guess the type and add your own content-type header -- maybe: try_lwt read_fs path >>= fun body -> let mime_type = Magic_mime.lookup path in let headers = Cohttp.Header.init in let headers = Cohttp.Header.add_opt headers "content-type" mime_type in S.respond_string ~status:`OK ~body ~headers () To include magic-mime in your kernel, you will need to reference it with add_to_ocamlfind_libraries / add_to_opam_packages in config.ml. This would be a nice feature to have in a higher-level project like mirage-seal [3]. [1] https://github.com/mirage/ocaml-cohttp/blob/84450beb6a532be8455a30c7782dbf1b3294622e/lwt/cohttp_lwt_unix.ml#L55 [2] https://github.com/mirage/mirage-skeleton/blob/a13cde3bb0421f3685c16b1ae5ef334986c6d0f0/static_website/dispatch.ml#L39 [3] https://github.com/mirage/mirage-seal/ -- Len On Fri, May 29, 2015 at 6:49 AM, Andrew Stuart <andrew.stuart@xxxxxxxxxxxxxxxxxx> wrote: >>> Which version of which web server are you using? > > ubuntu@ip-172-30-2-123:~/www.supercoders.com.au$ opam list | grep http > cohttp 0.17.2 HTTP library for Lwt, Async and Mirage > mirage-http 2.2.0 Mirage HTTP client and server driver > ubuntu@ip-172-30-2-123:~/www.supercoders.com.au$ > >>> What are you serving and what media type is being set? > > Just plain HTML pages and images. > >>> What configuration are you using? > > Err, not sure. How can I say? Itâs a unikernel built with the latest > release as far as I can tell. > > Interestingly the release notes here > https://github.com/mirage/ocaml-cohttp/blob/master/CHANGES > > says: > > 0.16.0 (2015-03-23): > New features and bug fixes: > * Use the `magic-mime` library to add a MIME type by probing filename > during static serving in the Lwt/Async backends. (#260) > > But it does not appear to be doing so. > > > Below are two requests, one to nginx and one Mirageos. You can see that > Mirageos is not returning Content-Type: text/html > > ************************************************** > *********************************************NGINX: > ubuntu@xxxxxxxxxxxxxxxxxxxxxx:/var/www/supercoders.com.au/htdocs$ curl -v -D > - http://www.supercoders.com.au > * Rebuilt URL to: http://www.supercoders.com.au/ > * Hostname was NOT found in DNS cache > * Trying 54.215.13.78... > * Connected to www.supercoders.com.au (54.215.13.78) port 80 (#0) >> GET / HTTP/1.1 >> User-Agent: curl/7.35.0 >> Host: www.supercoders.com.au >> Accept: */* >> > < HTTP/1.1 200 OK > HTTP/1.1 200 OK > * Server nginx/1.4.6 (Ubuntu) is not blacklisted > < Server: nginx/1.4.6 (Ubuntu) > Server: nginx/1.4.6 (Ubuntu) > < Date: Fri, 29 May 2015 10:47:52 GMT > Date: Fri, 29 May 2015 10:47:52 GMT > < Content-Type: text/html > Content-Type: text/html > < Transfer-Encoding: chunked > Transfer-Encoding: chunked > < Connection: keep-alive > Connection: keep-alive > > < > <html > > <head> > > > ************************************************** > *********************************************MirageOS: > ubuntu@xxxxxxxxxxxxxxxxxxxxxx:/var/www/supercoders.com.au/htdocs$ curl -v -D > - http://54.177.71.245 > * Rebuilt URL to: http://54.177.71.245/ > * Hostname was NOT found in DNS cache > * Trying 54.177.71.245... > * Connected to 54.177.71.245 (54.177.71.245) port 80 (#0) >> GET / HTTP/1.1 >> User-Agent: curl/7.35.0 >> Host: 54.177.71.245 >> Accept: */* >> > < HTTP/1.1 200 OK > HTTP/1.1 200 OK > < content-length: 21281 > content-length: 21281 > > < > <html > > <head> > > > > > > _______________________________________________ > MirageOS-devel mailing list > MirageOS-devel@xxxxxxxxxxxxxxxxxxxx > http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel _______________________________________________ MirageOS-devel mailing list MirageOS-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |