Skip to content

Instantly share code, notes, and snippets.

@agentgt
Last active December 11, 2015 21:18
Show Gist options
  • Save agentgt/4661047 to your computer and use it in GitHub Desktop.
Save agentgt/4661047 to your computer and use it in GitHub Desktop.
package com.snaphop.spring;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.http.MediaType;
import org.springframework.web.filter.OncePerRequestFilter;
public class BadMediaTypeFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String mediaTypes = request.getHeader("Accept");
if (mediaTypes != null) {
try {
MediaType.parseMediaTypes(mediaTypes);
} catch (IllegalArgumentException e) {
//You can't send an error because Spring's RequestMapping will fail render the error template.
//response.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, "Bad Accept Header");
response.setStatus(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
response.setContentType("text/plain");
response.getWriter().append("Aww Snap! You gave us a naughty Accept Header: '" + mediaTypes + "'.\n");
response.flushBuffer();
return;
}
}
filterChain.doFilter(request, response);
return;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment