Chris, On Feb 24, 2017, at 11:12 AM, Christopher Schultz <ch...@christopherschultz.net<mailto:ch...@christopherschultz.net>> wrote:
-----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. I wasn’t aware there was a servlet in-between simple requests like you stated. But that makes perfect sense. 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. Yep, a filter will be the next step. Honestly that’s the behavior I’m describing anyway. My initial hope was to keep the changes limited to Tomcat configuration but if that’s not possible that’s cool. Since it seems like a pretty common filter, is anyone aware of an existing implementation? I know it’s pretty trivial but no sense in rewriting the wheel if it’s already out there. Thanks! Ryan - -chris -----BEGIN PGP SIGNATURE----- Comment: GPGTools - http://gpgtools.org<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-unsubscr...@tomcat.apache.org<mailto:users-unsubscr...@tomcat.apache.org> For additional commands, e-mail: users-h...@tomcat.apache.org<mailto:users-h...@tomcat.apache.org>