更具体地说,我正在使用:
public String getMimeType() {
ServletContext context = request.getServletContext();
String filePath = request.getRequestURI().substring(request.getContextPath().length()+1, request.getRequestURI().length());
String fileName = context.getRealPath(filePath);
return context.getMimeType(fileName);
}
确定从客户端请求的文件类型(css,js,font等)。根据文件类型,会发生不同的操作。这是跨浏览器的一致性,或者通常是一种安全的方法来确定基于url中传递的文件名的文件类型,还是太容易破坏?
答案 0 :(得分:1)
这些浏览器是否一致?
与文件扩展名关联的mime类型位于此特定代码段中,而不是由客户端确定的。它由服务器根据<mime-mapping>
中的web.xml
条目确定。客户端控制的所有内容都是URL中的文件扩展名。但你已经知道了。
因此,您最好再提出&#34;这是否在服务器之间保持一致?&#34; 。答案是否。每个服务器都有自己的预定义mime映射。较旧的服务器可能缺少新的mime类型(如XLSX,SVG等)的映射。如果您想要覆盖您感兴趣的每个mime类型,并且您无法控制目标服务器及其配置,那么你最好在webapp自己的web.xml
中明确地映射它。
无关,请跳过getRealPath()
废话。在一个体面的Web应用程序中永远不需要它。而且,你在技术上根本不需要它。 URI或甚至唯一的文件名对getMimeType()
方法都有效。