tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christopher Schultz <ch...@christopherschultz.net>
Subject Re: "mime-mapping" and Content-Type
Date Fri, 24 Feb 2017 17:12:21 GMT
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Ryan,

On 2/20/17 10:38 AM, Ryan Yohnk wrote:
> I’ve come across a problem for which the “mime-mapping” element
> would be a good solution. Specifically I have a web application
> who’s source I can’t change, it’s not returning a specific
> Content-Type header and I’d like to start utilizing compression
> based on the mime-type.
> 
> Durning my investigation I created a trivial web app for testing
> but was unable to get the mime-type specified in the mime-mapping
> applied to requests sent to the specific extension. This was with
> Tomcat 8.0.33. The details can be found below or at the stack
> overflow post here: 
> http://stackoverflow.com/questions/42261607/tomcat-8-0-mime-mapping-co
ntent-type.

Just
> 
so you know, the mime-mapping only applies to resources served by
the DefaultServlet. If the application is accepting a request to e.g.
/my-file.txt, then the content-type isn't automatically being set to
"text/plain" by Tomcat... it's up to the servlet to do that.

The Mime-Mappings are available to servlets, but it's pretty rare for
a custom servlet to bother actually using them.

> As noted in the SO post, I can see that 
> StandardContext:addMimeMapping() is being called with my specific 
> mapping during initialization. But I’m never seeing the backing 
> mimeMappings called from there.
> 
> I’ve seen quite a few online posts on this topic but can’t seem
> find any official documentation for 8+. Is this feature something
> that’s still supported? If so, is there something I’m overlooking
> in my test or configuration?
> 
> Any light you guys can shine on the subject would be greatly 
> appreciated.
> 
> Thanks! Ryan
> 
> 
> 
> Servlet:
> 
> public class SimpleServlet extends HttpServlet { protected void 
> doGet(HttpServletRequest req, HttpServletResponse resp) throws 
> ServletException, IOException { IOUtils.write("Hello There!", 
> resp.getOutputStream()); resp.setStatus(202); } }
> 
> web.xml:
> 
> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
> http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
> 
> <servlet> <servlet-name>SimpleServlet</servlet-name> 
> <servlet-class>com.jamf.swa.SimpleServlet</servlet-class>
> </servlet>
> 
> <servlet-mapping> <servlet-name>SimpleServlet</servlet-name> 
> <url-pattern>*.swa</url-pattern> </servlet-mapping>
> 
> <mime-mapping> <extension>swa</extension> 
> <mime-type>text/rtf;charset=UTF-8</mime-type> </mime-mapping>
> 
> </web-app>
> 
> cURL request:
> 
> curl --trace-ascii - http://localhost:8080/testing.swa == Info: 
> Trying ::1... == Info: TCP_NODELAY set == Info: Connected to 
> localhost (::1) port 8080 (#0) => Send header, 89 bytes (0x59)
> 0000: GET /testing.swa HTTP/1.1 001b: Host: localhost:8080 0031: 
> User-Agent: curl/7.51.0 004a: Accept: * /* 0057: <= Recv header,
> 23 bytes (0x17) 0000: HTTP/1.1 202 Accepted <= Recv header, 27
> bytes (0x1b) 0000: Server: Apache-Coyote/1.1 <= Recv header, 20
> bytes (0x14) 0000: Content-Length: 12 <= Recv header, 37 bytes
> (0x25) 0000: Date: Wed, 15 Feb 2017 22:37:17 GMT <= Recv header, 2
> bytes (0x2) 0000: <= Recv data, 12 bytes (0xc) 0000: Hello There!
> Hello There!== Info: Curl_http_done: called premature == 0 == Info:
> Connection #0 to host localhost left intact

Yup: you are making a request to a custom servlet that doesn't do
anything with the MIME mappings.

You said you don't want to modify the source... what about *adding* to
it? Would it be okay to write a Filter and add it to the configuration
of the application? That is a very easy thing to do, and you can add
whatever headers you want for whatever reason.

- -chris
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBCAAGBQJYsGl1AAoJEBzwKT+lPKRYCkwP/i1lBjt3v6zsdYMWafdCNoTj
cIlYc3P6AAafDED7/Sf/8H3RQ1uOrp9n0DuM6hnjrh55ptv/VoAGDY3836ONSQ8S
ldWDJOipeTFW2byOeWc9fjT9+AJJ0B/3BidjUFgmljsyCw+f71ZYvHt2ECXNoXOO
T1nQG/OqqTnRZ54UZ1/d/PyZJSbEw1YHmS3f5DFfhtDHjgOS2bBsuQvSvX2XCUjK
lEcdCTbP1XaIU2jMIlRLF///i1Ytz2OsS12byt+tnotRC0MIVr1ST8Je6yvgaBLw
JHnStDdSJW4yFiy9aW8L54qChmdr1KCybavsnEHJKKgc7R5n+2qY2wDm4RwXl8b3
Aqyc9A5ELGhL/xn+kf3w4sC41yEAUXitYJyNkg33o69XoV+nxLfmuWTEqANwh5K+
RRsDQXTnnNZx9fewHpg2+/OnWUkLxaCtqfInU907c7AyXnuJ1jhWD9tBMXFy1SBA
jCQfj7U6hL/LsjQRPdpl0I0qpQ/KrxuCdBLCWwl28xwdXu21enlCV6ZvgHe3z6Vc
HVTc3dB/QbFNHJ9Qm1tbemOPTfR8rr2rycu3dcEXNlmwAwZ3yPASQGPnILZnxDyD
q1VmitMK3vfvoErXfMJ8yrPluQXRMus3f6Guu5k3gIYA/y9a+FUmUZ3pMPaTl69M
wLc5oAFEfPZcqfIdZlRd
=TfdZ
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message